Notebook com o carregamento dos dados brutos, realização do pré-processamento e treinamento dos modelos de ML


Bibliotecas e instalações

[1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots

import pickle
seed = 10
[2]:
# Pré-Processamento
from sklearn.preprocessing import LabelEncoder, StandardScaler, MinMaxScaler, MaxAbsScaler, PowerTransformer, QuantileTransformer
from sklearn.model_selection import train_test_split
[3]:
# Classificação
from sklearn.decomposition import PCA
from imblearn.over_sampling import SMOTE
from imblearn.under_sampling import RandomUnderSampler

from sklearn.ensemble import RandomForestClassifier
import xgboost as xgb

from sklearn.preprocessing import MultiLabelBinarizer
from sklearn.multiclass import OneVsRestClassifier

from sklearn.metrics import plot_confusion_matrix
/usr/local/lib/python3.7/dist-packages/sklearn/externals/six.py:31: FutureWarning:

The module is deprecated in version 0.21 and will be removed in version 0.23 since we've dropped support for Python 2.7. Please rely on the official version of six (https://pypi.org/project/six/).

/usr/local/lib/python3.7/dist-packages/sklearn/utils/deprecation.py:144: FutureWarning:

The sklearn.neighbors.base module is  deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.neighbors. Anything that cannot be imported from sklearn.neighbors is now part of the private API.

[4]:
# Regressão
from sklearn.metrics import mean_absolute_error, mean_squared_error

from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor

Funções

Gerais

[5]:
def read_csv(path):
  """Read csv files

  :param path str: path to the csv file.

  :return: dataframe from the csv file.
  :rtype: pd.DataFrame
  """

  df = pd.read_csv(path)
  print(df.shape)

  return df
[6]:
def save_csv(df, path):
  """Save csv files

  :param df pd.DataFrame: dataframe to be saved.
  :param path str: path to save the csv file.

  :return: no value
  :rtype: none
  """

  df.to_csv(path, encoding='utf-8', index=False)
  print('Arquivo csv salvo com sucesso!')
[7]:
def get_dates_diff(df):
  """Get the difference, in days, between columns with dates

  :param df pd.DataFrame: DataFrame to get the dates difference.

  :return: DataFrame with dates difference in nine new columns
  :rtype: pd.DataFrame
  """

  df_aux = df.copy()

  df_aux.dropna(subset=['DTTRAT','DTULTINFO'], inplace=True)

  lista_datas = ['DTCONSULT', 'DTDIAG', 'DTTRAT', 'DTULTINFO', 'DTRECIDIVA']

  for c in lista_datas:
    if c == 'DTTRAT':
      fmt = '%d/%m/%Y'
    else:
      fmt = '%Y-%m-%d'
    df_aux[c] = pd.to_datetime(df_aux[c], format=fmt)

  df_aux['delta_t1'] = (df_aux.DTDIAG - df_aux.DTCONSULT).dt.days
  df_aux['delta_t2'] = (df_aux.DTTRAT - df_aux.DTDIAG).dt.days
  df_aux['delta_t3'] = (df_aux.DTTRAT - df_aux.DTCONSULT).dt.days

  df_aux['delta_t4'] = (df_aux.DTRECIDIVA - df_aux.DTCONSULT).dt.days
  df_aux['delta_t5'] = (df_aux.DTRECIDIVA - df_aux.DTDIAG).dt.days
  df_aux['delta_t6'] = (df_aux.DTRECIDIVA - df_aux.DTTRAT).dt.days

  df_aux['delta_t7'] = (df_aux.DTULTINFO - df_aux.DTCONSULT).dt.days
  df_aux['delta_t8'] = (df_aux.DTULTINFO - df_aux.DTDIAG).dt.days
  df_aux['delta_t9'] = (df_aux.DTULTINFO - df_aux.DTTRAT).dt.days

  return df_aux
[8]:
def get_labels(df):
  """Create death labels acording to the last information year.

  :param df pd.DataFrame: dataframe to be processed.

  :return: DataFrame with the new labels
  :rtype: pd.DataFrame
  """

  df_aux = df.copy()

  # Label de óbito
  df_aux['ob'] = 0

  # Label de óbito de acordo com o ano
  df_aux['ano_ob'] = 0

  for index, row in df_aux.iterrows():
    if row.ULTINFO > 2:
      df_aux.loc[index, 'ob'] = 1
      if row.delta_t8 < 365:
        df_aux.loc[index, 'ano_ob'] = 1
      elif row.delta_t8 < 2*365:
        df_aux.loc[index, 'ano_ob'] = 2
      elif row.delta_t8 < 3*365:
        df_aux.loc[index, 'ano_ob'] = 3
      elif row.delta_t8 < 4*365:
        df_aux.loc[index, 'ano_ob'] = 4
      elif row.delta_t8 < 5*365:
        df_aux.loc[index, 'ano_ob'] = 5
      else:
        df_aux.loc[index, 'ano_ob'] = 6

  return df_aux
[9]:
def get_label_rec(df):
  """Create the labels analyzing whether there was recurrence.

  :param df pd.DataFrame: dataframe to be processed.

  :return: DataFrame with the new labels
  :rtype: pd.DataFrame
  """

  df_aux = df.copy()

  df_aux['ob_com_rec'] = 0
  df_aux['ob_sem_rec'] = 0
  df_aux['vivo_com_rec'] = 0
  df_aux['vivo_sem_rec'] = 0

  for i, row in df.iterrows():
    if row['ob'] == 1:
      if row.RECNENHUM == 1:
        df_aux.loc[i, 'ob_sem_rec'] = 1
      else:
        df_aux.loc[i, 'ob_com_rec'] = 1

    else:
      if row.RECNENHUM == 1:
        df_aux.loc[i, 'vivo_sem_rec'] = 1
      else:
        df_aux.loc[i, 'vivo_com_rec'] = 1

  return df_aux

Modelos

[10]:
def variables_preprocessing(df):
  """Do some preprocessing on the DataFrame like strings splits, fill NaN values,
     replace values and drop some columns.

  :param df pd.DataFrame: DataFrame to be preprocessed.

  :return: DataFrame after be preprocessed and get some columns removed
  :rtype: pd.DataFrame
  """

  df_aux = df.copy()
  no_info = '**Sem informação**'

  # DRS
  DRS_expand = df_aux.DRS.str.split(' ', expand=True)
  df_aux['DRS'] = DRS_expand[1]
  df_aux.DRS = df_aux.DRS.fillna(0).astype('int64')

  # META
  df_aux.META01.fillna(no_info, inplace=True)
  df_aux.META02.fillna(no_info, inplace=True)
  df_aux.META03.fillna(no_info, inplace=True)
  df_aux.META04.fillna(no_info, inplace=True)

  # REC
  df_aux.REC01.fillna(no_info, inplace=True)
  df_aux.REC02.fillna(no_info, inplace=True)
  df_aux.REC03.fillna(no_info, inplace=True)
  df_aux.REC04.fillna(no_info, inplace=True)

  # PT
  df_aux.PT = df_aux.PT.replace([1.0],'1')
  df_aux.PT = df_aux.PT.str.upper()
  df_aux.PT.fillna(no_info, inplace=True)

  # PN
  df_aux.PN = df_aux.PN.replace([0.0],'0')
  df_aux.PN = df_aux.PN.str.upper()
  df_aux.PN = df_aux.PN.replace(['1BI','IBII','O'],['1B1','1B2','0'])
  df_aux.PN.fillna(no_info, inplace=True)

  # PM
  df_aux.PM = df_aux.PM.replace([0.0],'0')
  df_aux.PM.fillna(no_info, inplace=True)

  # CICI
  df_aux.CICI.fillna(no_info, inplace=True)

  # CICIGRUP
  CICIGRUP_expand = df_aux.CICIGRUP.str.split('  ', expand=True)
  df_aux['CICIGRUP'] = CICIGRUP_expand[0]
  df_aux.CICIGRUP.fillna(no_info, inplace=True)

  # Colunas com valores únicos
  col = df_aux.columns
  drop_cols = ['S','QUIMIOANT','HORMOANT','TMOANT','IMUNOANT','OUTROANT','ERRO',
               'CIDO', 'UFNASC','CIDADE','DESCTOPO','DESCMORFO','DSCCIDO','CICISUBGRU',
               'INSTORIG', 'OUTRACLA']

  col = col.drop(drop_cols)

  return df_aux[col]
[11]:
def get_train_test(df, drop_cols, label, test_size=0.25, random_state=10):
  """Get features and label, and then returns train and test dataframes.

  :param df pd.DataFrame: dataframe that will be splitted.
  :param drop_cols list: columns to be removed from the DataFrame.
  :param label str: name of the label column.
  :param test_size float: size of test (default=0.25).
  :param random_state int: value for train_test_split random_state (default=10).

  :return: train and test DataFrames, X_train, X_test, y_train, y_test
  :rtype: pd.DataFrame
  """

  df_aux = df.copy()

  cols = df_aux.columns.drop(drop_cols)
  lb = df_aux[label].copy()
  cols = cols.drop(label)
  feat = df_aux[cols]

  X_train, X_test, y_train, y_test = train_test_split(feat, lb, test_size=test_size, random_state=random_state)
  print(f'X_train = {X_train.shape}, X_test = {X_test.shape}')
  print(f'y_train = {y_train.shape}, y_test = {y_test.shape}')

  return X_train, X_test, y_train, y_test
[12]:
def train_preprocessing(df, normalizer='StandardScaler', pca=False, pca_components=None, random_state=10):
  """Preprocessing the train dataset.

  :param df pd.DataFrame: DataFrame to be preprocessed.
  :param normalizer str: which normalizer to be fitted to the data (default='StandardScaler').
  :param pca bool: if want to use PCA components set True (default=False).
  :param pca_components int: number of PCA components (default=None).
  :param random_state int: value for pca random_state (default=10).

  :return df: preprocessed train DataFrame
  :rtype: pd.DataFrame
  :return enc: trained LabelEncoder
  :rtype: dict
  :return norm: trained normalizer
  :rtype: object
  :return pca if param pca=True: trained PCA
  :rtype: object
  """

  df_aux = df.copy()

  list_categorical = df_aux.select_dtypes(include='object').columns

  enc = dict()
  for col in list_categorical:
    enc[col] = LabelEncoder()
    df_aux[col] = enc[col].fit_transform(df_aux[col])

  if normalizer == 'StandardScaler':
    norm = StandardScaler()
  elif normalizer == 'MinMaxScaler':
    norm = MinMaxScaler()
  elif normalizer == 'MaxAbsScaler':
    norm = MaxAbsScaler()
  elif normalizer == 'PowerTransformer':
    norm = PowerTransformer()
  elif normalizer == 'QuantileTransformer':
    norm = QuantileTransformer(output_distribution='normal')

  df_aux = norm.fit_transform(df_aux)

  if pca:
    pca = PCA(pca_components, random_state=random_state)
    df_aux = pca.fit_transform(df_aux)

    return df_aux, enc, norm, pca

  else:
    return df_aux, enc, norm
[13]:
def test_preprocessing(df, enc, norm, pca=None):
  """Preprocessing the test dataset.

  :param df pd.DataFrame: DataFrame to be preprocessed.
  :param enc: trained encoder with the categorical features.
  :param norm: trained normalizer.
  :param pca: trained PCA (default=None).

  :return: preprocessed test DataFrame
  :rtype: pd.DataFrame
  """

  df_aux = df.copy()

  df_aux.fillna(0, inplace=True)

  list_categorical = df_aux.select_dtypes(include='object').columns

  for col in list_categorical:
    df_aux.loc[~df_aux[col].isin(enc[col].classes_), col] = -1
    df_aux.loc[df_aux[col].isin(enc[col].classes_), col] = enc[col].transform(df_aux[col][df_aux[col].isin(enc[col].classes_)])

  df_aux = norm.transform(df_aux)

  if pca != None:
    df_aux = pca.transform(df_aux)

  return df_aux
[14]:
def plot_feat_importances(model, X_test, n=25):
  """Shows the features importances for the model.

  :param model: machine learning model.
  :param X_test pd.DataFrame: X_test for the model, before preprocessing.
  :param n int: number of features to be shown (default=25).

  :return: no value
  :rtype: none
  """

  feat_import = pd.Series(model.feature_importances_, index=X_test.columns)
  feat_import.nlargest(n).plot(kind='barh', figsize=(10,10))
  plt.show()
[15]:
def validate_regression(X_test, model, y_test):
  """Validate the regression.

  :param X_test pd.DataFrame: values to be validated
  :param model: trained machine learning model
  :param y_test array-like: true labels for the regression

  :return: DataFrame comparing the real and predicted values
  :rtype: pd.DataFrame
  """

  y_pred = model.predict(X_test)
  df = pd.DataFrame({'Atual': y_test, 'Predito': y_pred})

  print(f'Mean Absolute Error: {mean_absolute_error(y_test, y_pred):.3f}')
  print(f'Mean Squared Error: {mean_squared_error(y_test, y_pred):.3f}')
  print(f'Root Mean Squared Error: {np.sqrt(mean_squared_error(y_test, y_pred)):.3f}')
  print(f'Score: {model.score(X_test, y_test):.3f}')

  return df

Dicionário de variáveis

  • ESCOLARI: Código para escolaridade do paciente (int = 1).

    1 – ANALFABETO

    2 – ENS. FUND. INCOMPLETO

    3 – ENS. FUND. COMPLETO

    4 – ENSINO MÉDIO

    5 – SUPERIOR

    9 – IGNORADA

  • IDADE: Idade do paciente (int = 3).

  • SEXO: Sexo do paciente (int = 1).

    1 – MASCULINO

    2 – FEMININO

  • UFNASC: UF de nascimento (char = 2). Outras opções: SI - Sem informação; OP - Outro país.
  • UFRESID: UF de residência (char = 2). Outras opções: OP - Outro país.

  • IBGE: Código da cidade de residência do paciente segundo IBGE com digito verificador (char = 7).

  • CIDADE: Cidade de residência do paciente (char = 200).

  • CATEATEND: Categoria de atendimento ao diagnóstico (int = 1).

    1 - CONVENIO

    2 - SUS

    3 – PARTICULAR

    9 – SEM INFORMAÇÃO

  • DTCONSULT: Data da 1ª consulta (date = 10). Formato: DD/MM/YYYY

  • CLINICA: Código da clinica (int = 2).

    1 – ALERGIA/IMUNOLOGIA

    2 – CIRURGIA CARDIACA

    3 – CIRURGIA CABEÇA E PESCOÇO

    4 – CIRURGIA GERAL

    5 – CIRURGIA PEDIATRICA

    6 – CIRURGIA PLASTICA

    7 – CIRURGIA TORAXICA

    8 – CIRURGIA VASCULAR

    9 – CLINICA MEDICA

    10 – DERMATOLOGIA

    11 – ENDOCRINOLOGIA

    12 – GASTROCIRURGIA

    13 – GASTROENTEROLOGIA

    14 – GERIATRIA

    15 – GINECOLOGIA

    16 – GINECOLOGIA / OBSTETRICIA

    17 – HEMATOLOGIA

    18 – INFECTOLOGIA

    19 – NEFROLOGIA

    20 – NEUROCIRURGIA

    21 – NEUROLOGIA

    22 – OFTALMOLOGIA

    23 – ONCOLOGIA CIRURGICA

    24 – ONCOLOGIA CLINICA

    25 – ONCOLOGIA PEDIATRICA

    26 – ORTOPEDIA

    27 – OTORRINOLARINGOLOGIA

    28 – PEDIATRIA

    29 – PNEUMOLOGIA

    30 – PROCTOLOGIA

    31 – RADIOTERAPIA

    32 – UROLOGIA

    33 – MASTOLOGIA

    34 – ONCOLOGIA CUTANEA

    35 – CIRURGIA PELVICA

    36 – CIRURGIA ABDOMINAL

    37 – ODONTOLOGIA

    38 – TRANSPLANTE HEPATICO

    99 – IGNORADO

  • DIAGPREV: Diagnóstico e tratamento anterior (int = 1).

    1 – SEM DIAGNÓSTICO / SEM TRATAMENTO

    2 – COM DIAGNÓSTICO / SEM TRATAMENTO

    3 – COM DIAGNÓSTICO / COM TRATAMENTO

    4 – OUTROS
  • DTDIAG: Data do diagnóstico (date = 10). Formato: DD/MM/YYYY
  • BASEDIAG: Código da base do diagnóstico (int = 1).

    1 – EXAME CLINICO

    2 – RECURSOS AUXILIARES NÃO MICROSCÓPICOS

    3 – CONFIRMAÇÃO MICROSCÓPICA

    4 – SEM INFORMAÇÃO
  • TOPO: Código da topografia (char = 4). Formato: C999
  • TOPOGRUP: Grupo da topografia (char = 3). Formato: C99
  • DESCTOPO: Descrição da Topografia (char = 80).

  • MORFO: Código da morfologia (char = 5). Formato: 99999

  • DESCMORFO: Descrição da morfologia (char = 80).

  • EC: Estádio clínico (char = 5).

  • ECGRUP: Grupo do estadiamento clínico (char = 3).

    0 - Tumores primários, classificados como in situ

    I - Tumores localizados

    II - Tumores com envolvimento regional por extensão direta

    III - Tumores com envolvimento regional de linfonodos

    IV - Tumores com metástase à distância

    X - Para tumores não avaliados pelo profissional responsável ou sem informação sobre estadiamento anotada no prontuário

    Y - Para tumores em que não se aplica a classificação TNM. São os tumores não sólidos (por exemplo, as leucemias)

  • T: Classificação TNM - T (char = 5).

  • N: Classificação TNM - N (char = 5).
  • M: Classificação TNM - M (char = 3).
  • PT: Estadiamento pós cirúrgico (char = 5).

  • PN: Estadiamento pós cirúrgico (char = 5).
  • PM: Estadiamento pós cirúrgico (char = 3).
  • S: Classificação TNM - S (int = 1). Domínio: 0; 1; 2; 3; 8 – NÃO SE APLICA; 9 – X

  • G: Classificação TNM – G (Grau) (char = 5).

    Domínio (exceto C40, C41, C381, C382, C383, C47, C48 e C49): 0; 1; 2; 3; 4; 8 – NÃO SE APLICA; 9 – X

    Domínio (somente C40, C41, C381, C382, C383, C47, C48 e C49): ALTO; BAIXO; 8 – NÃO SE APLICA; 9 – X

  • LOCALTNM: Classificação TNM - Localização (int = 1).

    1 – SUPERIOR

    2 – MEDIO

    3 – INFERIOR

    8 – NÃO SE APLICA

    9 – X

  • IDMITOTIC: Classificação TNM – Índice Mitótico (int = 1).

    1 – ALTA

    2 – BAIXA

    8 – NÃO SE APLICA

    9 – X

  • PSA: Classificação TNM - PSA (int = 1).

    1 – MENOR QUE 10

    2 – MAIOR OU IGUAL A 10 E MENOR QUE 20

    3 – MAIOR OU IGUAL A 20

    8 – NÃO SE APLICA

    9 – X

  • GLEASON: Classificação TNM - Gleason (int = 1).

    1 – MENOR OU IGUAL A 6

    2 – IGUAL A 7

    3 – MAIOR OU IGUAL A 8

    8 – NÃO SE APLICA

    9 – X

  • OUTRACLA: Outra classificação de estadiamento (char = 20).

  • META01: Metástase (char = 3). Formato: C99

  • META02: Metástase (char = 3). Formato: C99

  • META03: Metástase (char = 3). Formato: C99

  • META04: Metástase (char = 3). Formato: C99

  • DTTRAT: Data de inicio do tratamento (date = 10). Formato: DD/MM/YYYY
  • NAOTRAT: Código da razão para não realização do tratamento (int = 1).

    1 – RECUSA DO TRATAMENTO

    2 – DOENÇA AVANÇADA, FALTA DE CONDIÇÕES CLINICAS

    3 – OUTRAS DOENÇAS ASSOCIADAS

    4 – ABANDONO DE TRATAMENTO

    5 – OBITO POR CANCER

    6 – OBITO POR OUTRAS CAUSAS, SOE

    7 – OUTRAS

    8 – NÃO SE APLICA (CASO TENHA TRATAMENTO)

    9 – SEM INFORMAÇÃO
  • TRATAMENTO: Código de combinação dos tratamentos realizados (char = 1).

    A – Cirurgia

    B – Radioterapia

    C – Quimioterapia

    D – Cirurgia + Radioterapia

    E – Cirurgia + Quimioterapia

    F – Radioterapia + Quimioterapia

    G – Cirurgia + Radio + Quimio

    H – Cirurgia + Radio + Quimio + Hormonio

    I – Outras combinações de tratamento

    J – Nenhum tratamento realizado
  • TRATHOSP: Código de combinação dos tratamentos realizados no hospital (char = 1).

    A – Cirurgia

    B – Radioterapia

    C – Quimioterapia

    D – Cirurgia + Radioterapia

    E – Cirurgia + Quimioterapia

    F – Radioterapia + Quimioterapia

    G – Cirurgia + Radio + Quimio

    H – Cirurgia + Radio + Quimio + Hormonio

    I – Outras combinações de tratamento

    J – Nenhum tratamento realizado
  • TRATFANTES: Código de combinação dos tratamentos realizados antes/durante admissão fora do hospital (char = 1).

    A – Cirurgia

    B – Radioterapia

    C – Quimioterapia

    D – Cirurgia + Radioterapia

    E – Cirurgia + Quimioterapia

    F – Radioterapia + Quimioterapia

    G – Cirurgia + Radio + Quimio

    H – Cirurgia + Radio + Quimio + Hormonio

    I – Outras combinações de tratamento

    J – Nenhum tratamento realizado

    K – Sem informação

  • TRATFAPOS: Código de combinação dos tratamentos realizados após admissão fora do hospital (char = 1).

    A – Cirurgia

    B – Radioterapia

    C – Quimioterapia

    D – Cirurgia + Radioterapia

    E – Cirurgia + Quimioterapia

    F – Radioterapia + Quimioterapia

    G – Cirurgia + Radio + Quimio

    H – Cirurgia + Radio + Quimio + Hormonio

    I – Outras combinações de tratamento

    J – Nenhum tratamento realizado

    K – Sem informação

  • NENHUM: Tratamento recebido no hospital = nenhum (int = 1). 0 – NÃO; 1 – SIM

  • CIRURGIA: Tratamento recebido no hospital = cirurgia (int = 1). 0 – NÃO; 1 – SIM

  • RADIO: Tratamento recebido no hospital = radioterapia (int = 1). 0 – NÃO; 1 – SIM

  • QUIMIO: Tratamento recebido no hospital = quimioterapia (int = 1). 0 – NÃO; 1 – SIM

  • HORMONIO: Tratamento recebido no hospital = hormonioterapia (int = 1). 0 – NÃO; 1 – SIM

  • TMO: Tratamento recebido no hospital = tmo (int = 1). 0 – NÃO; 1 – SIM

  • IMUNO: Tratamento recebido no hospital = imunoterapia (int = 1). 0 – NÃO; 1 – SIM

  • OUTROS: Tratamento recebido no hospital = outros (int = 1). 0 – NÃO; 1 – SIM

  • NENHUMANT: Tratamento recebido fora do hospital e antes da admissão = nenhum (int = 1). 0 – NÃO; 1 – SIM

  • CIRURANT: Tratamento recebido fora do hospital e antes da admissão = cirurgia (int = 1). 0 – NÃO; 1 – SIM

  • RADIOANT: Tratamento recebido fora do hospital e antes da admissão = radioterapia (int = 1). 0 – NÃO; 1 – SIM

  • QUIMIOANT: Tratamento recebido fora do hospital e antes da admissão = quimioterapia (int = 1). 0 – NÃO; 1 – SIM

  • HORMOANT: Tratamento recebido fora do hospital e antes da admissão = hormonioterapia (int = 1). 0 – NÃO; 1 – SIM

  • TMOANT: Tratamento recebido fora do hospital e antes da admissão = tmo (int = 1). 0 – NÃO; 1 – SIM

  • IMUNOANT: Tratamento recebido fora do hospital e antes da admissão = imunoterapia (int = 1). 0 – NÃO; 1 – SIM

  • OUTROANT: Tratamento recebido fora do hospital e antes da admissão = outros (int = 1). 0 – NÃO; 1 – SIM

  • NENHUMAPOS: Tratamento recebido fora do hospital e durante/após admissão = nenhum (int = 1). 0 – NÃO; 1 – SIM

  • CIRURAPOS: Tratamento recebido fora do hospital e durante/após admissão = cirurgia (int = 1). 0 – NÃO; 1 – SIM

  • RADIOAPOS: Tratamento recebido fora do hospital e durante/após admissão = radioterapia (int = 1). 0 – NÃO; 1 – SIM

  • QUIMIOAPOS: Tratamento recebido fora do hospital e durante/após admissão = quimioterapia (int = 1). 0 – NÃO; 1 – SIM
  • HORMOAPOS: Tratamento recebido fora do hospital e durante/após admissão = hormonioterapia (int = 1). 0 – NÃO; 1 – SIM
  • TMOAPOS: Tratamento recebido fora do hospital e durante/após admissão = tmo (int = 1). 0 – NÃO; 1 – SIM
  • IMUNOAPOS: Tratamento recebido fora do hospital e durante/após admissão = imunoterapia (int = 1). 0 – NÃO; 1 – SIM

  • OUTROAPOS: Tratamento recebido fora do hospital e durante/após admissão = outros (int = 1). 0 – NÃO; 1 – SIM

  • DTULTINFO: Data da última informação do paciente (date = 10). Formato: DD/MM/YYYY

  • ULTINFO: Última informação sobre o paciente (int = 1).

    1 – VIVO, COM CÂNCER

    2 – VIVO, SOE

    3 – OBITO POR CANCER

    4 – OBITO POR OUTRAS CAUSAS, SOE

  • CONSDIAG: Diferença em dias entre as datas de consulta o diagnóstico (num = dias).

  • TRATCONS: Diferença em dias entre as datas de consulta e tratamento (num = dias).
  • DIAGTRAT: Diferença em dias entre as datas de tratamento e diagnóstico (num = dias).

  • ANODIAG: Ano de diagnóstico (int = 4). Formato: 9999

  • CICI: Tumor infantil (char = 5).
  • CICIGRUP: Tumor infantil – Grupo (char = 80).
  • CICISUBGRU: Tumor infantil – Sub grupo (char = 80).

  • FAIXAETAR: Faixa etária do paciente (char = 5).

  • LATERALI: Lateralidade (int = 1).

    1 – DIREITA

    2 – ESQUERDA

    3 – BILATERAL

    8 - NÃO SE APLICA

  • INSTORIG: Instituição de origem (char = 200). Obrigatório somente se DIAGPREV = 03 – COM DIAGNÓSTICO / COM TRATAMENTO

  • DRS: Departamentos Regionais de Saúde (char = 200).

  • RRAS: RRAS (char = 200).
  • PERDASEG: Perda de seguimento (int = 1).

    0 – Não

    1 – Sim

    8 – Não se aplica (excluído do cálculo para o indicador perda de seguimento)
  • ERRO: Admissão com erro (int = 1). 0 – Sem; 1 – Com

  • DTRECIDIVA: Data da última ocorrência de recidiva (date = 10). Formato: DD/MM/YYYY
  • RECNENHUM: Sem recidiva (int = 1). 0 - Não; 1 - Sim

  • RECLOCAL: Recidiva local (int = 1). 0 - Não; 1 - Sim
  • RECREGIO: Recidiva regional (int = 1). 0 - Não; 1 - Sim

  • RECDIST: Recidiva a distância / metástase (int = 1). 0 - Não; 1 - Sim
  • REC01: Local da recidiva/metástase (char = 3). Formato: C99

  • REC02: Local da recidiva/metástase (char = 3). Formato: C99
  • REC03: Local da recidiva/metástase (char = 3). Formato: C99

  • REC04: Local da recidiva/metástase (char = 3). Formato: C99
  • IBGEATEN: Código IBGE da instituição (int = 7).

  • CIDO: Código da morfologia 3ª Edição (int = 5). Formato: 99999
  • DSCCIDO: Descrição da morfologia 3ª Edição (char = 89).

Leitura dos dados

[16]:
data = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/pacigeral.csv')
/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py:2822: DtypeWarning:

Columns (23,24,25,32,36,78,91) have mixed types.Specify dtype option on import or set low_memory=False.

(943660, 95)

Análise dos dados

Informações

[17]:
data.head()
[17]:
ESCOLARI IDADE SEXO UFNASC UFRESID IBGE CIDADE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP DESCTOPO MORFO DESCMORFO EC ECGRUP T N M PT PN PM S G LOCALTNM IDMITOTIC PSA GLEASON OUTRACLA META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO ... HORMOANT TMOANT IMUNOANT OUTROANT NENHUMAPOS CIRURAPOS RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP CICISUBGRU FAIXAETAR LATERALI INSTORIG DRS RRAS PERDASEG ERRO DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN CIDO DSCCIDO
0 4 40.0 2 SP SP 3530805 MOGIMIRIM 9 2000-01-03 15 1 2000-01-10 3 C539 C53 COLO DO UTERO 81402 ADENOCARCINOMA IN SITU SOE 0 0 X X 0 IS 0 0 8 8 8 8 8 8 NaN NaN NaN NaN NaN 07/04/2000 8 A ... 0 0 0 0 1 0 0 0 0 0 0 0 2016-09-13 2 7 95.0 88.0 2000 NaN NaN NaN 40-49 8 NaN DRS 14 SĂO JOĂO DA BOA VISTA 15 1 0 NaN 1 0 0 0 NaN NaN NaN NaN 3509502 81402.0 ADENOCARCINOMA IN SITU SOE
1 9 45.0 2 RJ SP 3509502 CAMPINAS 9 2000-01-05 15 1 2000-01-17 3 C539 C53 COLO DO UTERO 80703 CARCINOMA ESCAMOCELULAR SOE IIIB III X X 0 X X X 8 8 8 8 8 8 NaN NaN NaN NaN NaN 20/01/2000 8 F ... 0 0 0 0 1 0 0 0 0 0 0 0 2002-08-25 3 12 15.0 3.0 2000 NaN NaN NaN 40-49 8 NaN DRS 07 CAMPINAS 15 0 0 NaN 1 0 0 0 NaN NaN NaN NaN 3509502 80703.0 CARCINOMA ESCAMOCELULAR SOE
2 2 63.0 2 MG SP 3509502 CAMPINAS 9 2000-01-19 15 1 2000-01-25 3 C539 C53 COLO DO UTERO 80703 CARCINOMA ESCAMOCELULAR SOE IIIB III X X 0 X X X 8 8 8 8 8 8 NaN NaN NaN NaN NaN 03/02/2000 8 B ... 0 0 0 0 1 0 0 0 0 0 0 0 2001-03-20 3 6 15.0 9.0 2000 NaN NaN NaN 60-69 8 NaN DRS 07 CAMPINAS 15 0 0 NaN 1 0 0 0 NaN NaN NaN NaN 3509502 80703.0 CARCINOMA ESCAMOCELULAR SOE
3 9 64.0 2 SP SP 3545803 SANTA BARBARA D OESTE 9 2000-01-28 15 1 2000-02-03 3 C539 C53 COLO DO UTERO 80703 CARCINOMA ESCAMOCELULAR SOE IIIB III X X 0 X X X 8 8 8 8 8 8 NaN NaN NaN NaN NaN 01/03/2000 8 B ... 0 0 0 0 1 0 0 0 0 0 0 0 2002-07-15 3 6 33.0 27.0 2000 NaN NaN NaN 60-69 8 NaN DRS 07 CAMPINAS 15 0 0 NaN 1 0 0 0 NaN NaN NaN NaN 3509502 80703.0 CARCINOMA ESCAMOCELULAR SOE
4 1 48.0 2 SP SP 3530805 MOGIMIRIM 9 2000-01-04 15 2 2000-01-04 3 C539 C53 COLO DO UTERO 80703 CARCINOMA ESCAMOCELULAR SOE IIIB III X X 0 X X X 8 8 8 8 8 8 NaN NaN NaN NaN NaN 15/05/2000 8 B ... 0 0 0 0 1 0 0 0 0 0 0 0 2016-03-10 2 0 132.0 132.0 2000 NaN NaN NaN 40-49 8 NaN DRS 14 SĂO JOĂO DA BOA VISTA 15 1 0 NaN 1 0 0 0 NaN NaN NaN NaN 3509502 80703.0 CARCINOMA ESCAMOCELULAR SOE

5 rows × 95 columns

[18]:
data.shape
[18]:
(943660, 95)
[19]:
data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 943660 entries, 0 to 943659
Data columns (total 95 columns):
 #   Column      Non-Null Count   Dtype
---  ------      --------------   -----
 0   ESCOLARI    943660 non-null  int64
 1   IDADE       943659 non-null  float64
 2   SEXO        943660 non-null  int64
 3   UFNASC      943660 non-null  object
 4   UFRESID     943660 non-null  object
 5   IBGE        943660 non-null  int64
 6   CIDADE      943660 non-null  object
 7   CATEATEND   943660 non-null  int64
 8   DTCONSULT   943660 non-null  object
 9   CLINICA     943660 non-null  int64
 10  DIAGPREV    943660 non-null  int64
 11  DTDIAG      943660 non-null  object
 12  BASEDIAG    943660 non-null  int64
 13  TOPO        943660 non-null  object
 14  TOPOGRUP    943660 non-null  object
 15  DESCTOPO    943660 non-null  object
 16  MORFO       943660 non-null  int64
 17  DESCMORFO   943657 non-null  object
 18  EC          943660 non-null  object
 19  ECGRUP      943660 non-null  object
 20  T           943660 non-null  object
 21  N           943660 non-null  object
 22  M           943660 non-null  object
 23  PT          423355 non-null  object
 24  PN          418790 non-null  object
 25  PM          396734 non-null  object
 26  S           943660 non-null  int64
 27  G           943660 non-null  int64
 28  LOCALTNM    943660 non-null  int64
 29  IDMITOTIC   943660 non-null  int64
 30  PSA         943660 non-null  int64
 31  GLEASON     943660 non-null  int64
 32  OUTRACLA    60799 non-null   object
 33  META01      123918 non-null  object
 34  META02      37602 non-null   object
 35  META03      12035 non-null   object
 36  META04      3434 non-null    object
 37  DTTRAT      868764 non-null  object
 38  NAOTRAT     943660 non-null  int64
 39  TRATAMENTO  943660 non-null  object
 40  TRATHOSP    943660 non-null  object
 41  TRATFANTES  943660 non-null  object
 42  TRATFAPOS   943660 non-null  object
 43  NENHUM      943660 non-null  int64
 44  CIRURGIA    943660 non-null  int64
 45  RADIO       943660 non-null  int64
 46  QUIMIO      943660 non-null  int64
 47  HORMONIO    943660 non-null  int64
 48  TMO         943660 non-null  int64
 49  IMUNO       943660 non-null  int64
 50  OUTROS      943660 non-null  int64
 51  NENHUMANT   943660 non-null  int64
 52  CIRURANT    943660 non-null  int64
 53  RADIOANT    943660 non-null  int64
 54  QUIMIOANT   943660 non-null  int64
 55  HORMOANT    943660 non-null  int64
 56  TMOANT      943660 non-null  int64
 57  IMUNOANT    943660 non-null  int64
 58  OUTROANT    943660 non-null  int64
 59  NENHUMAPOS  943660 non-null  int64
 60  CIRURAPOS   943660 non-null  int64
 61  RADIOAPOS   943660 non-null  int64
 62  QUIMIOAPOS  943660 non-null  int64
 63  HORMOAPOS   943660 non-null  int64
 64  TMOAPOS     943660 non-null  int64
 65  IMUNOAPOS   943660 non-null  int64
 66  OUTROAPOS   943660 non-null  int64
 67  DTULTINFO   943615 non-null  object
 68  ULTINFO     943660 non-null  int64
 69  CONSDIAG    943660 non-null  int64
 70  TRATCONS    868764 non-null  float64
 71  DIAGTRAT    868764 non-null  float64
 72  ANODIAG     943660 non-null  int64
 73  CICI        25549 non-null   object
 74  CICIGRUP    25549 non-null   object
 75  CICISUBGRU  25549 non-null   object
 76  FAIXAETAR   943660 non-null  object
 77  LATERALI    943660 non-null  int64
 78  INSTORIG    461 non-null     object
 79  DRS         872685 non-null  object
 80  RRAS        943660 non-null  int64
 81  PERDASEG    943660 non-null  int64
 82  ERRO        943660 non-null  int64
 83  DTRECIDIVA  94900 non-null   object
 84  RECNENHUM   943660 non-null  int64
 85  RECLOCAL    943660 non-null  int64
 86  RECREGIO    943660 non-null  int64
 87  RECDIST     943660 non-null  int64
 88  REC01       59209 non-null   object
 89  REC02       16831 non-null   object
 90  REC03       5284 non-null    object
 91  REC04       1421 non-null    object
 92  IBGEATEN    943660 non-null  int64
 93  CIDO        943631 non-null  float64
 94  DSCCIDO     943631 non-null  object
dtypes: float64(4), int64(51), object(40)
memory usage: 684.0+ MB
[20]:
data.dtypes[:45]
[20]:
ESCOLARI        int64
IDADE         float64
SEXO            int64
UFNASC         object
UFRESID        object
IBGE            int64
CIDADE         object
CATEATEND       int64
DTCONSULT      object
CLINICA         int64
DIAGPREV        int64
DTDIAG         object
BASEDIAG        int64
TOPO           object
TOPOGRUP       object
DESCTOPO       object
MORFO           int64
DESCMORFO      object
EC             object
ECGRUP         object
T              object
N              object
M              object
PT             object
PN             object
PM             object
S               int64
G               int64
LOCALTNM        int64
IDMITOTIC       int64
PSA             int64
GLEASON         int64
OUTRACLA       object
META01         object
META02         object
META03         object
META04         object
DTTRAT         object
NAOTRAT         int64
TRATAMENTO     object
TRATHOSP       object
TRATFANTES     object
TRATFAPOS      object
NENHUM          int64
CIRURGIA        int64
dtype: object
[21]:
data.dtypes[46:]
[21]:
QUIMIO          int64
HORMONIO        int64
TMO             int64
IMUNO           int64
OUTROS          int64
NENHUMANT       int64
CIRURANT        int64
RADIOANT        int64
QUIMIOANT       int64
HORMOANT        int64
TMOANT          int64
IMUNOANT        int64
OUTROANT        int64
NENHUMAPOS      int64
CIRURAPOS       int64
RADIOAPOS       int64
QUIMIOAPOS      int64
HORMOAPOS       int64
TMOAPOS         int64
IMUNOAPOS       int64
OUTROAPOS       int64
DTULTINFO      object
ULTINFO         int64
CONSDIAG        int64
TRATCONS      float64
DIAGTRAT      float64
ANODIAG         int64
CICI           object
CICIGRUP       object
CICISUBGRU     object
FAIXAETAR      object
LATERALI        int64
INSTORIG       object
DRS            object
RRAS            int64
PERDASEG        int64
ERRO            int64
DTRECIDIVA     object
RECNENHUM       int64
RECLOCAL        int64
RECREGIO        int64
RECDIST         int64
REC01          object
REC02          object
REC03          object
REC04          object
IBGEATEN        int64
CIDO          float64
DSCCIDO        object
dtype: object
[22]:
data.describe()
[22]:
ESCOLARI IDADE SEXO IBGE CATEATEND CLINICA DIAGPREV BASEDIAG MORFO S G LOCALTNM IDMITOTIC PSA GLEASON NAOTRAT NENHUM CIRURGIA RADIO QUIMIO HORMONIO TMO IMUNO OUTROS NENHUMANT CIRURANT RADIOANT QUIMIOANT HORMOANT TMOANT IMUNOANT OUTROANT NENHUMAPOS CIRURAPOS RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG LATERALI RRAS PERDASEG ERRO RECNENHUM RECLOCAL RECREGIO RECDIST IBGEATEN CIDO
count 943660.00000 943659.000000 943660.000000 9.436600e+05 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.0 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.0 943660.0 943660.0 943660.0 943660.0 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.000000 868764.000000 868764.000000 943660.000000 943660.000000 943660.000000 943660.000000 943660.0 943660.000000 943660.000000 943660.000000 943660.000000 9.436600e+05 943631.000000
mean 4.37267 59.832544 1.500366 3.545901e+06 4.925719 21.468955 1.371384 2.987796 83645.271036 8.0 7.851896 7.980918 7.997274 7.803760 7.806778 7.796074 0.083336 0.624015 0.260059 0.350319 0.122043 0.003889 0.006654 0.063399 0.999332 0.000001 0.000001 0.0 0.0 0.0 0.0 0.0 0.942144 0.004360 0.029190 0.008128 0.002320 0.000252 0.000152 0.006662 2.436262 52.378192 68.910686 65.945955 2010.314762 6.889584 16.035628 0.173644 0.0 0.917301 0.040326 0.024385 0.022254 3.533473e+06 83645.472312
std 2.94082 16.869766 0.500000 3.686201e+05 3.541344 12.621792 0.483175 0.245657 4587.585415 0.0 0.952922 0.354786 0.134579 1.124976 1.086837 0.895393 0.276390 0.484376 0.438667 0.477070 0.327336 0.062241 0.081300 0.243679 0.025830 0.001029 0.001029 0.0 0.0 0.0 0.0 0.0 0.233470 0.065883 0.168338 0.089788 0.048107 0.015879 0.012309 0.081351 0.860431 166.758604 151.221891 149.361384 5.264743 2.453975 23.992836 0.378803 0.0 0.275427 0.196723 0.154241 0.147508 1.905791e+04 4588.360210
min 1.00000 0.000000 1.000000 1.100015e+06 1.000000 1.000000 1.000000 1.000000 80001.000000 8.0 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.0 0.0 0.0 0.0 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 2000.000000 1.000000 1.000000 0.000000 0.0 0.000000 0.000000 0.000000 0.000000 3.502804e+06 80001.000000
25% 2.00000 51.000000 1.000000 3.517505e+06 2.000000 12.000000 1.000000 3.000000 80762.000000 8.0 8.000000 8.000000 8.000000 8.000000 8.000000 8.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.0 0.0 0.0 0.0 0.0 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 2.000000 3.000000 11.000000 0.000000 2006.000000 8.000000 6.000000 0.000000 0.0 1.000000 0.000000 0.000000 0.000000 3.509502e+06 80762.000000
50% 3.00000 62.000000 2.000000 3.540606e+06 2.000000 24.000000 1.000000 3.000000 81403.000000 8.0 8.000000 8.000000 8.000000 8.000000 8.000000 8.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.0 0.0 0.0 0.0 0.0 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 2.000000 22.000000 39.000000 32.000000 2011.000000 8.000000 10.000000 0.000000 0.0 1.000000 0.000000 0.000000 0.000000 3.543402e+06 81403.000000
75% 9.00000 72.000000 2.000000 3.550308e+06 9.000000 29.000000 2.000000 3.000000 85003.000000 8.0 8.000000 8.000000 8.000000 8.000000 8.000000 8.000000 0.000000 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.0 0.0 0.0 0.0 0.0 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 3.000000 53.000000 81.000000 84.000000 2015.000000 8.000000 13.000000 0.000000 0.0 1.000000 0.000000 0.000000 0.000000 3.550308e+06 85003.000000
max 9.00000 113.000000 2.000000 9.999999e+06 9.000000 99.000000 2.000000 9.000000 99893.000000 8.0 9.000000 9.000000 9.000000 9.000000 9.000000 9.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.0 0.0 0.0 0.0 0.0 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 4.000000 24971.000000 24996.000000 6891.000000 2020.000000 8.000000 99.000000 1.000000 0.0 1.000000 1.000000 1.000000 1.000000 3.555000e+06 99893.000000
[25]:
fig = px.bar(x = np.sort(data.ANODIAG.unique()), y = data.ANODIAG.value_counts().sort_index(), labels={'x':'Ano', 'y':'Quantidade de casos'},
             title = 'Número de casos por ano')
# fig.show()
fig.show(config = {'staticPlot': True})
[26]:
masc = data[data.SEXO == 1]
fem = data[data.SEXO == 2]
[27]:
mascx = np.sort(masc.ANODIAG.unique())
mascy = masc.ANODIAG.value_counts().sort_index()

femx = np.sort(fem.ANODIAG.unique())
femy = fem.ANODIAG.value_counts().sort_index()

fig = go.Figure()

fig.add_trace(go.Bar(x = mascx,
                     y = mascy,
                     name = 'Masculino',
              ))

fig.add_trace(go.Bar(x = femx,
                     y = femy,
                     name = 'Feminino',
              ))

fig.update_layout(barmode = 'group', title_text='Pacientes por ano',
                  yaxis_title = 'Indivíduos', xaxis_title = 'Ano')

# fig.show()
fig.show(config = {'staticPlot': True})
[ ]:
masc.FAIXAETAR = masc.FAIXAETAR.replace(['00-09', '10-19', '20-29', '30-39', '40-49', '50-59', '60-69'],
                                        ['00 a 09', '10 a 19', '20 a 29', '30 a 39', '40 a 49', '50 a 59', '60 a 69'])
fem.FAIXAETAR = fem.FAIXAETAR.replace(['00-09', '10-19', '20-29', '30-39', '40-49', '50-59', '60-69'],
                                      ['00 a 09', '10 a 19', '20 a 29', '30 a 39', '40 a 49', '50 a 59', '60 a 69'])
[29]:
mascx = np.sort(masc.FAIXAETAR.unique())
mascy = masc.FAIXAETAR.value_counts().sort_index()

femx = np.sort(fem.FAIXAETAR.unique())
femy = fem.FAIXAETAR.value_counts().sort_index()

fig = go.Figure()

fig.add_trace(go.Scatter(x = mascx,
                         y = (mascy/masc.shape[0])*100,
                         name = 'Masculino',
                         mode = 'lines+markers',
              ))

fig.add_trace(go.Scatter(x = femx,
                         y = (femy/fem.shape[0])*100,
                         name = 'Feminino',
                         mode = 'lines+markers',
              ))

fig.update_layout(title_text='Pacientes por faixa etária',
                  yaxis_title = '% Pacientes total por sexo', xaxis_title = 'Faixa etária')

# fig.show()
fig.show(config = {'staticPlot': True})
[30]:
# O estádio clínico auxilia o médico no planejamento terapêutico e na avaliação
# do tratamento proposto, além de servir para a predição do prognóstico.
## Na análise dos dados segundo estadiamento foram excluídos os casos informados
## como X (casos nos quais não é possível realizar o estadiamento ou sem informação)
## e Y (tipo de câncer em que não se aplica a classificação de tumores malignos TNM).

EC = list(np.sort(data.ECGRUP.unique()))[:5] # Categories 0, I, II, III, IV

mascEC = masc.loc[masc.ECGRUP.isin(EC)]
femEC = fem.loc[fem.ECGRUP.isin(EC)]

mascx = np.sort(mascEC.ECGRUP.unique())
mascy = mascEC.ECGRUP.value_counts().sort_index()

femx = np.sort(femEC.ECGRUP.unique())
femy = femEC.ECGRUP.value_counts().sort_index()

fig = go.Figure()

fig.add_trace(go.Bar(x = mascx,
                     y = (mascy/mascEC.shape[0])*100,
                     name = 'Masculino',
              ))

fig.add_trace(go.Bar(x = femx,
                     y = (femy/femEC.shape[0])*100,
                     name = 'Feminino',
              ))

fig.update_layout(barmode = 'group', title_text='Pacientes por estádio clínico',
                  yaxis_title = '% de indivíduos', xaxis_title = 'Estádio clínico')

# fig.show()
fig.show(config = {'staticPlot': True})
[32]:
df_diag1 = data[data.DIAGPREV == 1] # Sem diagnóstico/sem tratamento
df_diag2 = data[data.DIAGPREV == 2] # Com diagnóstico/sem tratamento
[33]:
x = np.sort(df_diag1.ANODIAG.unique())
y = df_diag1.groupby('ANODIAG')['CONSDIAG'].median() #mediana do número de dias entre consulta e diagnóstico

fig = go.Figure(go.Scatter(x=x, y=y, mode = 'lines+markers+text', text=y, textposition='top center'))
fig.update_layout(title='Mediana do número de dias entre consulta e diagnóstico por ano',
                   xaxis_title='Ano',
                   yaxis_title='Número de dias')
# fig.show()
fig.show(config = {'staticPlot': True})
[34]:
# Excluindo C44 (com morfologias entre 80101 e 81103), quem não fez tratamento e Morfologia 80001 (neoplasias de comportamento incerto)
df1 = df_diag1[(df_diag1.TOPOGRUP == 'C44') & (df_diag1.MORFO > 80101) & (df_diag1.MORFO < 81103)]
df2 = df_diag2[(df_diag2.TOPOGRUP == 'C44') & (df_diag2.MORFO > 80101) & (df_diag2.MORFO < 81103)]

id1 = df1.index
df_diag1 = df_diag1.drop(id1)

id2 = df2.index
df_diag2 = df_diag2.drop(id2)

df_diag1 = df_diag1[(df_diag1.NAOTRAT == 8) & (df_diag1.MORFO != 80001)]
df_diag2 = df_diag2[(df_diag2.NAOTRAT == 8) & (df_diag2.MORFO != 80001)]
[35]:
x1 = np.sort(df_diag1.ANODIAG.unique())
y1 = df_diag1.groupby('ANODIAG')['DIAGTRAT'].median()

x2 = np.sort(df_diag2.ANODIAG.unique())
y2 = df_diag2.groupby('ANODIAG')['DIAGTRAT'].median()

fig = go.Figure()

fig.add_trace(go.Scatter(x = x1,
                         y = y1,
                         name = 'Sem diagnóstico',
                         mode = 'lines+markers+text',
                         text=y1, textposition='top center',
              ))

fig.add_trace(go.Scatter(x = x2,
                         y = y2,
                         name = 'Com diagnóstico',
                         mode = 'lines+markers+text',
                         text=y2, textposition='top center',
              ))

fig.update_layout(title_text='Número de dias entre diagnóstico e tratamento por ano',
                  yaxis_title = 'Número de dias', xaxis_title = 'Ano')

# fig.show()
fig.show(config = {'staticPlot': True})
[ ]:
# 1 – VIVO, COM CÂNCER; 2 – VIVO, SOE; 3 – OBITO POR CANCER; 4 – OBITO POR OUTRAS CAUSAS, SOE
#### Possível label
data['ULTINFO'].value_counts()
2    435227
3    275159
4    123266
1    110008
Name: ULTINFO, dtype: int64
[36]:
mascx = np.sort(masc.ULTINFO.unique())
mascy = masc.ULTINFO.value_counts().sort_index()

femx = np.sort(fem.ULTINFO.unique())
femy = fem.ULTINFO.value_counts().sort_index()

fig = go.Figure()

fig.add_trace(go.Bar(x = mascx,
                     y = mascy,
                     name = 'Masculino',
              ))

fig.add_trace(go.Bar(x = femx,
                     y = femy,
                     name = 'Feminino',
              ))

fig.update_xaxes(
    ticktext=["Vivo, com câncer", "Vivo, SOE", "Óbito por câncer", "Óbito outras causa, SOE"],
    tickvals=[1, 2, 3, 4],
)

fig.update_layout(barmode = 'group', title_text='Última informação dos pacientes',
                  yaxis_title = 'Indivíduos', xaxis_title = 'Última informação')

# fig.show()
fig.show(config = {'staticPlot': True})
[37]:
corr_matrix = data.corr()
corr_matrix['ULTINFO'].sort_values(ascending = False)
[37]:
ULTINFO       1.000000
CATEATEND     0.209677
IDADE         0.179051
GLEASON       0.123226
PSA           0.118750
NENHUM        0.108192
LATERALI      0.077999
RECREGIO      0.068783
QUIMIO        0.054078
NENHUMAPOS    0.052510
RADIO         0.037872
RECLOCAL      0.034662
RECDIST       0.019467
G             0.019415
IDMITOTIC     0.011788
NENHUMANT     0.008194
CIRURANT     -0.000522
RADIOANT     -0.000522
TMO          -0.003801
IMUNO        -0.004610
OUTROS       -0.004980
TMOAPOS      -0.006424
IMUNOAPOS    -0.007243
BASEDIAG     -0.016254
IBGE         -0.016555
LOCALTNM     -0.018795
TRATCONS     -0.021244
CIRURAPOS    -0.024802
HORMOAPOS    -0.029185
IBGEATEN     -0.037029
OUTROAPOS    -0.042629
RRAS         -0.043626
RADIOAPOS    -0.044204
CONSDIAG     -0.045605
DIAGPREV     -0.049736
QUIMIOAPOS   -0.049821
DIAGTRAT     -0.055853
HORMONIO     -0.060877
CIDO         -0.062996
MORFO        -0.063005
CLINICA      -0.063309
RECNENHUM    -0.068966
ESCOLARI     -0.069296
SEXO         -0.081510
NAOTRAT      -0.127175
CIRURGIA     -0.127532
ANODIAG      -0.283658
PERDASEG     -0.325491
S                  NaN
QUIMIOANT          NaN
HORMOANT           NaN
TMOANT             NaN
IMUNOANT           NaN
OUTROANT           NaN
ERRO               NaN
Name: ULTINFO, dtype: float64
[ ]:
data.iloc[:,:30].hist(bins=10,figsize=(20,15))
plt.show()
_images/Cancer_Models_45_0.png
[ ]:
data.iloc[:,30:60].hist(bins=10,figsize=(20,15))
plt.show()
_images/Cancer_Models_46_0.png
[ ]:
data.iloc[:,60:].hist(bins=10,figsize=(20,15))
plt.show()
_images/Cancer_Models_47_0.png
[ ]:
correlations = corr_matrix

fig, ax = plt.subplots(figsize = (25,20))
colormap = sns.diverging_palette(220, 10, as_cmap = True)

sns.heatmap(correlations, cmap = colormap, annot = True, fmt = '.2f')
fig.show()
_images/Cancer_Models_48_0.png

Análise cidade de residência e não realização do tratamento

[ ]:
data.head(3)
ESCOLARI IDADE SEXO UFNASC UFRESID IBGE CIDADE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP DESCTOPO MORFO DESCMORFO EC ECGRUP T N M PT PN PM S G LOCALTNM IDMITOTIC PSA GLEASON OUTRACLA META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO ... HORMOANT TMOANT IMUNOANT OUTROANT NENHUMAPOS CIRURAPOS RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP CICISUBGRU FAIXAETAR LATERALI INSTORIG DRS RRAS PERDASEG ERRO DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN CIDO DSCCIDO
0 4 40.0 2 SP SP 3530805 MOGIMIRIM 9 2000-01-03 15 1 2000-01-10 3 C539 C53 COLO DO UTERO 81402 ADENOCARCINOMA IN SITU SOE 0 0 X X 0 IS 0 0 8 8 8 8 8 8 NaN NaN NaN NaN NaN 07/04/2000 8 A ... 0 0 0 0 1 0 0 0 0 0 0 0 2016-09-13 2 7 95.0 88.0 2000 NaN NaN NaN 40-49 8 NaN DRS 14 SĂO JOĂO DA BOA VISTA 15 1 0 NaN 1 0 0 0 NaN NaN NaN NaN 3509502 81402.0 ADENOCARCINOMA IN SITU SOE
1 9 45.0 2 RJ SP 3509502 CAMPINAS 9 2000-01-05 15 1 2000-01-17 3 C539 C53 COLO DO UTERO 80703 CARCINOMA ESCAMOCELULAR SOE IIIB III X X 0 X X X 8 8 8 8 8 8 NaN NaN NaN NaN NaN 20/01/2000 8 F ... 0 0 0 0 1 0 0 0 0 0 0 0 2002-08-25 3 12 15.0 3.0 2000 NaN NaN NaN 40-49 8 NaN DRS 07 CAMPINAS 15 0 0 NaN 1 0 0 0 NaN NaN NaN NaN 3509502 80703.0 CARCINOMA ESCAMOCELULAR SOE
2 2 63.0 2 MG SP 3509502 CAMPINAS 9 2000-01-19 15 1 2000-01-25 3 C539 C53 COLO DO UTERO 80703 CARCINOMA ESCAMOCELULAR SOE IIIB III X X 0 X X X 8 8 8 8 8 8 NaN NaN NaN NaN NaN 03/02/2000 8 B ... 0 0 0 0 1 0 0 0 0 0 0 0 2001-03-20 3 6 15.0 9.0 2000 NaN NaN NaN 60-69 8 NaN DRS 07 CAMPINAS 15 0 0 NaN 1 0 0 0 NaN NaN NaN NaN 3509502 80703.0 CARCINOMA ESCAMOCELULAR SOE

3 rows × 95 columns

[38]:
df_muni = data[['UFRESID','IBGE','NAOTRAT']]
df_muni = df_muni[df_muni.UFRESID != 'OP']
df_muni.head(3)
[38]:
UFRESID IBGE NAOTRAT
0 SP 3530805 8
1 SP 3509502 8
2 SP 3509502 8
[39]:
df_cities = pd.read_csv('https://raw.githubusercontent.com/kelvins/Municipios-Brasileiros/main/csv/municipios.csv')
df_cities = df_cities[['codigo_ibge','nome','latitude','longitude']]
df_cities.head()
[39]:
codigo_ibge nome latitude longitude
0 5200050 Abadia de Goiás -16.75730 -49.4412
1 3100104 Abadia dos Dourados -18.48310 -47.3916
2 5200100 Abadiânia -16.19700 -48.7057
3 3100203 Abaeté -19.15510 -45.4444
4 1500107 Abaetetuba -1.72183 -48.8788
[40]:
df_muni = df_muni.merge(df_cities, how='left', left_on='IBGE', right_on='codigo_ibge')
df_muni.head(5)
[40]:
UFRESID IBGE NAOTRAT codigo_ibge nome latitude longitude
0 SP 3530805 8 3530805 Mogi Mirim -22.4332 -46.9532
1 SP 3509502 8 3509502 Campinas -22.9053 -47.0659
2 SP 3509502 8 3509502 Campinas -22.9053 -47.0659
3 SP 3545803 8 3545803 Santa Bárbara d'Oeste -22.7553 -47.4143
4 SP 3530805 8 3530805 Mogi Mirim -22.4332 -46.9532
[41]:
df_muni.NAOTRAT.value_counts()
[41]:
8    868164
5     30655
7     20391
2      9166
9      7323
6      2474
3      1892
4      1718
1      1581
Name: NAOTRAT, dtype: int64
[42]:
df_muni['razao'] = df_muni.NAOTRAT.replace([1,2,3,4,5,6,7,8,9],
                                           ['RECUSA DO TRATAMENTO','DOENÇA AVANÇADA, FALTA DE CONDIÇÕES CLINICAS','OUTRAS DOENÇAS ASSOCIADAS',
                                            'ABANDONO DE TRATAMENTO','OBITO POR CANCER','OBITO POR OUTRAS CAUSAS, SOE','OUTRAS','NÃO SE APLICA',
                                            'SEM INFORMAÇÃO'])
df_muni.head(3)
[42]:
UFRESID IBGE NAOTRAT codigo_ibge nome latitude longitude razao
0 SP 3530805 8 3530805 Mogi Mirim -22.4332 -46.9532 NÃO SE APLICA
1 SP 3509502 8 3509502 Campinas -22.9053 -47.0659 NÃO SE APLICA
2 SP 3509502 8 3509502 Campinas -22.9053 -47.0659 NÃO SE APLICA
[43]:
df_naotrat = df_muni[df_muni.NAOTRAT.isin([1,4,7])]
df_naotrat.shape
[43]:
(23690, 8)
[44]:
df_hosp = pd.DataFrame()
df_hosp['Hospitais'] = data.IBGEATEN.unique()
df_hosp.head(2)
[44]:
Hospitais
0 3509502
1 3543402
[45]:
df_hosp = df_hosp.merge(df_cities, how='left', left_on='Hospitais', right_on='codigo_ibge')
df_hosp.head()
[45]:
Hospitais codigo_ibge nome latitude longitude
0 3509502 3509502 Campinas -22.9053 -47.0659
1 3543402 3543402 Ribeirão Preto -21.1699 -47.8099
2 3554102 3554102 Taubaté -23.0104 -45.5593
3 3550308 3550308 São Paulo -23.5329 -46.6395
4 3506003 3506003 Bauru -22.3246 -49.0871
[46]:
fig = px.scatter_geo(df_naotrat,
                     lat='latitude',
                     lon='longitude',
                     color='razao',
                     scope='south america',
                     projection='natural earth'
                     )

fig.add_scattergeo(lat=df_hosp.latitude,
                   lon=df_hosp.longitude,
                   name='Hospitais',
                   marker=dict(color='orange', size=7, symbol='diamond')
                   )

fig.update_layout(template='xgridoff',
                  margin={"r":0,"l":0,"b":0},
                  title_text="Razão para não tratamento")
fig.update_layout()

# fig.show()
fig.show(config = {'staticPlot': True})

Variáveis faltantes

[47]:
missing = data.isna().sum().sort_values(ascending=False)
prop = missing[missing > 0]/data.shape[0]
prop
[47]:
INSTORIG      0.999511
REC04         0.998494
META04        0.996361
REC03         0.994401
META03        0.987246
REC02         0.982164
CICI          0.972926
CICIGRUP      0.972926
CICISUBGRU    0.972926
META02        0.960153
REC01         0.937256
OUTRACLA      0.935571
DTRECIDIVA    0.899434
META01        0.868684
PM            0.579580
PN            0.556207
PT            0.551369
TRATCONS      0.079368
DIAGTRAT      0.079368
DTTRAT        0.079368
DRS           0.075212
DTULTINFO     0.000048
CIDO          0.000031
DSCCIDO       0.000031
DESCMORFO     0.000003
IDADE         0.000001
dtype: float64
[48]:
fig = px.bar(x = prop.index, y = prop*100, labels={'y': '%', 'x':'Variable'},title='Percentage of missing data per column')
# fig.show()
fig.show(config = {'staticPlot': True})
[ ]:
# INSTORIG - Instituição de origem. Obrigatório somente se DIAGPREV = 03 – COM DIAGNÓSTICO / COM TRATAMENTO
data[data['INSTORIG'].isna() == False]['INSTORIG'].shape
(461,)
[ ]:
# REC04 - Local da recidiva/metástase. Formato: C99
data[data['REC04'].isna() == False]['REC04'].shape
(1421,)
[ ]:
# META04 - Metástase. Formato: C99
data[data['META04'].isna() == False]['META04'].shape
(3434,)
[ ]:
# REC03 - Local da recidiva/metástase. Formato: C99
data[data['REC03'].isna() == False]['REC03'].shape
(5284,)
[ ]:
# META03 - Metástase. Formato: C99
data[data['META03'].isna() == False]['META03'].shape
(12035,)
[ ]:
# REC02 - Local da recidiva/metástase. Formato: C99
data[data['REC02'].isna() == False]['REC02'].shape
(16831,)
[ ]:
# CICI - Tumor infantil
data[data['CICI'].isna() == False]['CICI'].shape
(25549,)
[ ]:
# CICIGRUP - Tumor infantil - Grupo
data[data['CICIGRUP'].isna() == False]['CICIGRUP'].shape
(25549,)
[ ]:
# CICISUBGRU - Tumor infantil - Sub grupo
data[data['CICISUBGRU'].isna() == False]['CICISUBGRU'].shape
(25549,)
[ ]:
# META02 - Metástase. Formato: C99
data[data['META02'].isna() == False]['META02'].shape
(37602,)
[ ]:
# REC01 - Local da recidiva/metástase. Formato: C99
data[data['REC01'].isna() == False]['REC01'].shape
(59209,)
[ ]:
# OUTRACLA - Outra classificação de estadiamento
data[data['OUTRACLA'].isna() == False]['OUTRACLA'].shape
(60799,)
[ ]:
# DTRECIDIVA - Data da última ocorrência de recidiva
data[data['DTRECIDIVA'].isna() == False]['DTRECIDIVA'].shape
(94900,)
[ ]:
# META01 - Metástase. Formato: C99
data[data['META01'].isna() == False]['META01'].shape
(123918,)
[ ]:
# PM - Estadiamento pós cirúrgico
data[data['PM'].isna() == False]['PM'].shape
(396734,)
[ ]:
# PN - Estadiamento pós cirúrgico
data[data['PN'].isna() == False]['PN'].shape
(418790,)
[ ]:
# PT - Estadiamento pós cirúrgico
data[data['PT'].isna() == False]['PT'].shape
(423355,)
[ ]:
# TRATCONS - Diferença em dias entre as datas de consulta e tratamento
data[data['TRATCONS'].isna() == False]['TRATCONS'].shape
(868764,)
[ ]:
# DIAGTRAT - Diferença em dias entre as datas de tratamento e diagnóstico
data[data['DIAGTRAT'].isna() == False]['DIAGTRAT'].shape
(868764,)
[ ]:
# DTTRAT - Data de inicio do tratamento
data[data['DTTRAT'].isna() == False]['DTTRAT'].shape
(868764,)
[ ]:
# DRS - DRS
data[data['DRS'].isna() == False]['DRS'].shape
(872685,)
[ ]:
# DTULTINFO - Data da última informação do paciente
data[data['DTULTINFO'].isna() == False]['DTULTINFO'].shape
(943615,)
[ ]:
# CIDO - Código da morfologia 3ª Edição
data[data['CIDO'].isna() == False]['CIDO'].shape
(943631,)
[ ]:
# DSCCIDO - Descrição da morfologia 3ª Edição
data[data['DSCCIDO'].isna() == False]['DSCCIDO'].shape
(943631,)
[ ]:
# DESCMORFO - Descrição da morfologia
data[data['DESCMORFO'].isna() == False]['DESCMORFO'].shape
(943657,)
[ ]:
# IDADE - Idade do paciente
data[data['IDADE'].isna() == False]['IDADE'].shape
(943659,)

Análise das colunas

[ ]:
df_aux = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/pacigeral.csv')
/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py:2822: DtypeWarning:

Columns (23,24,25,32,36,78,91) have mixed types.Specify dtype option on import or set low_memory=False.

(943660, 95)

Datas

  • DTCONSULT: Data da 1ª consulta (date = 10). Formato: DD/MM/YYYY

  • DTDIAG: Data do diagnóstico (date = 10). Formato: DD/MM/YYYY

  • DTTRAT: Data de inicio do tratamento (date = 10). Formato: DD/MM/YYYY

  • DTULTINFO: Data da última informação do paciente (date = 10). Formato: DD/MM/YYYY

  • DTRECIDIVA: Data da última ocorrência de recidiva (date = 10). Formato: DD/MM/YYYY

[ ]:
# Data - DTCONSULT, DTDIAG, DTTRAT, DTULTINFO, DTRECIDIVA
dates = ['DTCONSULT', 'DTDIAG', 'DTTRAT', 'DTULTINFO', 'DTRECIDIVA']
df_aux[dates].isna().sum()
DTCONSULT          0
DTDIAG             0
DTTRAT         74896
DTULTINFO         45
DTRECIDIVA    848760
dtype: int64
[ ]:
(df_aux[dates].isna().sum()/df_aux.shape[0])*100
DTCONSULT      0.000000
DTDIAG         0.000000
DTTRAT         7.936757
DTULTINFO      0.004769
DTRECIDIVA    89.943412
dtype: float64

Categorias numéricas

  • ESCOLARI: Código para escolaridade do paciente (int = 1).

    1 – ANALFABETO

    2 – ENS. FUND. INCOMPLETO

    3 – ENS. FUND. COMPLETO

    4 – ENSINO MÉDIO

    5 – SUPERIOR

    9 – IGNORADA

[ ]:
df_aux.ESCOLARI.value_counts()
2    303175
9    249236
3    142196
4    110885
1     71032
5     67136
Name: ESCOLARI, dtype: int64
  • SEXO: Sexo do paciente (int = 1).

    1 – MASCULINO

    2 – FEMININO

[ ]:
df_aux.SEXO.value_counts()
2    472175
1    471485
Name: SEXO, dtype: int64
  • CATEATEND: Categoria de atendimento ao diagnóstico (int = 1).

    1 - CONVENIO

    2 - SUS

    3 – PARTICULAR

    9 – SEM INFORMAÇÃO

[ ]:
df_aux.CATEATEND.value_counts()
2    448124
9    404512
1     80862
3     10162
Name: CATEATEND, dtype: int64
  • CLINICA: Código da clinica (int = 2).

    1 – ALERGIA/IMUNOLOGIA

    2 – CIRURGIA CARDIACA

    3 – CIRURGIA CABEÇA E PESCOÇO

    4 – CIRURGIA GERAL

    5 – CIRURGIA PEDIATRICA

    6 – CIRURGIA PLASTICA

    7 – CIRURGIA TORAXICA

    8 – CIRURGIA VASCULAR

    9 – CLINICA MEDICA

    10 – DERMATOLOGIA

    11 – ENDOCRINOLOGIA

    12 – GASTROCIRURGIA

    13 – GASTROENTEROLOGIA

    14 – GERIATRIA

    15 – GINECOLOGIA

    16 – GINECOLOGIA / OBSTETRICIA

    17 – HEMATOLOGIA

    18 – INFECTOLOGIA

    19 – NEFROLOGIA

    20 – NEUROCIRURGIA

    21 – NEUROLOGIA

    22 – OFTALMOLOGIA

    23 – ONCOLOGIA CIRURGICA

    24 – ONCOLOGIA CLINICA

    25 – ONCOLOGIA PEDIATRICA

    26 – ORTOPEDIA

    27 – OTORRINOLARINGOLOGIA

    28 – PEDIATRIA

    29 – PNEUMOLOGIA

    30 – PROCTOLOGIA

    31 – RADIOTERAPIA

    32 – UROLOGIA

    33 – MASTOLOGIA

    34 – ONCOLOGIA CUTANEA

    35 – CIRURGIA PELVICA

    36 – CIRURGIA ABDOMINAL

    37 – ODONTOLOGIA

    38 – TRANSPLANTE HEPATICO

    99 – IGNORADO

[ ]:
np.sort(df_aux.CLINICA.unique()) #### 39
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,
       18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
       35, 36, 37, 38, 39, 99])
  • DIAGPREV: Diagnóstico e tratamento anterior (int = 1).

    1 – SEM DIAGNÓSTICO / SEM TRATAMENTO

    2 – COM DIAGNÓSTICO / SEM TRATAMENTO

    3 – COM DIAGNÓSTICO / COM TRATAMENTO

    4 – OUTROS

[ ]:
df_aux.DIAGPREV.value_counts()
1    593200
2    350460
Name: DIAGPREV, dtype: int64
  • BASEDIAG: Código da base do diagnóstico (int = 1).

    1 – EXAME CLINICO

    2 – RECURSOS AUXILIARES NÃO MICROSCÓPICOS

    3 – CONFIRMAÇÃO MICROSCÓPICA

    9 – SEM INFORMAÇÃO

[ ]:
df_aux.BASEDIAG.value_counts()
3    927294
2     13320
1      2059
9       987
Name: BASEDIAG, dtype: int64
  • S: Classificação TNM - S (int = 1). Domínio: 0; 1; 2; 3; 8 – NÃO SE APLICA; 9 – X

  • G: Classificação TNM – G (Grau) (char = 5).

    Domínio (exceto C40, C41, C381, C382, C383, C47, C48 e C49): 0; 1; 2; 3; 4; 8 – NÃO SE APLICA; 9 – X

    Domínio (somente C40, C41, C381, C382, C383, C47, C48 e C49): ALTO; BAIXO; 8 – NÃO SE APLICA; 9 – X

[ ]:
df_aux.S.value_counts() ### drop
8    943660
Name: S, dtype: int64
[ ]:
df_aux.G.value_counts()
8    903222
9     12770
3     10600
2      8549
1      4720
4      3799
Name: G, dtype: int64
[ ]:
# 8 - Não se aplica, 9 - X
df_aux.G[df_aux.G < 8].count()
27668
  • LOCALTNM: Classificação TNM - Localização (int = 1).

    1 – SUPERIOR

    2 – MEDIO

    3 – INFERIOR

    8 – NÃO SE APLICA

    9 – X

  • IDMITOTIC: Classificação TNM – Índice Mitótico (int = 1).

    1 – ALTA

    2 – BAIXA

    8 – NÃO SE APLICA

    9 – X

[ ]:
df_aux.LOCALTNM.value_counts()
8    939049
2      2006
9      1384
1       625
3       596
Name: LOCALTNM, dtype: int64
[ ]:
# 8 - Não se aplica, 9 - X
df_aux.LOCALTNM[df_aux.LOCALTNM < 8].count()
3227
[ ]:
df_aux.IDMITOTIC.value_counts()
8    943155
2       267
1       151
9        87
Name: IDMITOTIC, dtype: int64
[ ]:
# 8 - Não se aplica, 9 - X
df_aux.IDMITOTIC[df_aux.IDMITOTIC < 8].count()
418
  • PSA: Classificação TNM - PSA (int = 1).

    1 – MENOR QUE 10

    2 – MAIOR OU IGUAL A 10 E MENOR QUE 20

    3 – MAIOR OU IGUAL A 20

    8 – NÃO SE APLICA

    9 – X

  • GLEASON: Classificação TNM - Gleason (int = 1).

    1 – MENOR OU IGUAL A 6

    2 – IGUAL A 7

    3 – MAIOR OU IGUAL A 8

    8 – NÃO SE APLICA

    9 – X

[ ]:
df_aux.PSA.value_counts()
8    911114
1     17698
2      6282
3      5362
9      3204
Name: PSA, dtype: int64
[ ]:
# 8 - Não se aplica, 9 - X
df_aux.PSA[df_aux.PSA < 8].count()
29342
[ ]:
df_aux.GLEASON.value_counts()
8    911114
2     13794
1     10079
3      6282
9      2391
Name: GLEASON, dtype: int64
[ ]:
# 8 - Não se aplica, 9 - X
df_aux.GLEASON[df_aux.GLEASON < 8].count()
30155
  • NAOTRAT: Código da razão para não realização do tratamento (int = 1).

    1 – RECUSA DO TRATAMENTO

    2 – DOENÇA AVANÇADA, FALTA DE CONDIÇÕES CLINICAS

    3 – OUTRAS DOENÇAS ASSOCIADAS

    4 – ABANDONO DE TRATAMENTO

    5 – OBITO POR CANCER

    6 – OBITO POR OUTRAS CAUSAS, SOE

    7 – OUTRAS

    8 – NÃO SE APLICA (CASO TENHA TRATAMENTO)

    9 – SEM INFORMAÇÃO

[ ]:
df_aux.NAOTRAT.value_counts()
8    868397
5     30655
7     20453
2      9166
9      7324
6      2474
3      1892
4      1718
1      1581
Name: NAOTRAT, dtype: int64
  • NENHUM: Tratamento recebido no hospital = nenhum (int = 1). 0 – NÃO; 1 – SIM

  • CIRURGIA: Tratamento recebido no hospital = cirurgia (int = 1). 0 – NÃO; 1 – SIM

  • RADIO: Tratamento recebido no hospital = radioterapia (int = 1). 0 – NÃO; 1 – SIM

  • QUIMIO: Tratamento recebido no hospital = quimioterapia (int = 1). 0 – NÃO; 1 – SIM

  • HORMONIO: Tratamento recebido no hospital = hormonioterapia (int = 1). 0 – NÃO; 1 – SIM

  • TMO: Tratamento recebido no hospital = tmo (int = 1). 0 – NÃO; 1 – SIM

  • IMUNO: Tratamento recebido no hospital = imunoterapia (int = 1). 0 – NÃO; 1 – SIM

  • OUTROS: Tratamento recebido no hospital = outros (int = 1). 0 – NÃO; 1 – SIM

[ ]:
df_aux.NENHUM.unique()
array([0, 1])
[ ]:
df_aux.CIRURGIA.unique()
array([1, 0])
[ ]:
df_aux.RADIO.unique()
array([0, 1])
[ ]:
df_aux.QUIMIO.unique()
array([0, 1])
[ ]:
df_aux.HORMONIO.unique()
array([0, 1])
[ ]:
df_aux.TMO.unique()
array([0, 1])
[ ]:
df_aux.IMUNO.unique()
array([0, 1])
[ ]:
df_aux.OUTROS.unique()
array([0, 1])
  • NENHUMANT: Tratamento recebido fora do hospital e antes da admissão = nenhum (int = 1). 0 – NÃO; 1 – SIM

  • CIRURANT: Tratamento recebido fora do hospital e antes da admissão = cirurgia (int = 1). 0 – NÃO; 1 – SIM

  • RADIOANT: Tratamento recebido fora do hospital e antes da admissão = radioterapia (int = 1). 0 – NÃO; 1 – SIM

  • QUIMIOANT: Tratamento recebido fora do hospital e antes da admissão = quimioterapia (int = 1). 0 – NÃO; 1 – SIM

  • HORMOANT: Tratamento recebido fora do hospital e antes da admissão = hormonioterapia (int = 1). 0 – NÃO; 1 – SIM

  • TMOANT: Tratamento recebido fora do hospital e antes da admissão = tmo (int = 1). 0 – NÃO; 1 – SIM

  • IMUNOANT: Tratamento recebido fora do hospital e antes da admissão = imunoterapia (int = 1). 0 – NÃO; 1 – SIM

  • OUTROANT: Tratamento recebido fora do hospital e antes da admissão = outros (int = 1). 0 – NÃO; 1 – SIM

[ ]:
df_aux.NENHUMANT.unique()
array([1, 0])
[ ]:
df_aux.CIRURANT.unique()
array([0, 1])
[ ]:
df_aux.RADIOANT.unique()
array([0, 1])
[ ]:
df_aux.QUIMIOANT.unique() ### drop
array([0])
[ ]:
df_aux.HORMOANT.unique() ### drop
array([0])
[ ]:
df_aux.TMOANT.unique() ### drop
array([0])
[ ]:
df_aux.IMUNOANT.unique() ### drop
array([0])
[ ]:
df_aux.OUTROANT.unique() ### drop
array([0])
  • NENHUMAPOS: Tratamento recebido fora do hospital e durante/após admissão = nenhum (int = 1). 0 – NÃO; 1 – SIM

  • CIRURAPOS: Tratamento recebido fora do hospital e durante/após admissão = cirurgia (int = 1). 0 – NÃO; 1 – SIM

  • RADIOAPOS: Tratamento recebido fora do hospital e durante/após admissão = radioterapia (int = 1). 0 – NÃO; 1 – SIM

  • QUIMIOAPOS: Tratamento recebido fora do hospital e durante/após admissão = quimioterapia (int = 1). 0 – NÃO; 1 – SIM

  • HORMOAPOS: Tratamento recebido fora do hospital e durante/após admissão = hormonioterapia (int = 1). 0 – NÃO; 1 – SIM

  • TMOAPOS: Tratamento recebido fora do hospital e durante/após admissão = tmo (int = 1). 0 – NÃO; 1 – SIM

  • IMUNOAPOS: Tratamento recebido fora do hospital e durante/após admissão = imunoterapia (int = 1). 0 – NÃO; 1 – SIM

  • OUTROAPOS: Tratamento recebido fora do hospital e durante/após admissão = outros (int = 1). 0 – NÃO; 1 – SIM

[ ]:
df_aux.NENHUMAPOS.unique()
array([1, 0])
[ ]:
df_aux.CIRURAPOS.unique()
array([0, 1])
[ ]:
df_aux.RADIOAPOS.unique()
array([0, 1])
[ ]:
df_aux.QUIMIOAPOS.unique()
array([0, 1])
[ ]:
df_aux.HORMOAPOS.unique()
array([0, 1])
[ ]:
df_aux.TMOAPOS.unique()
array([0, 1])
[ ]:
df_aux.IMUNOAPOS.unique()
array([0, 1])
[ ]:
df_aux.OUTROAPOS.unique()
array([0, 1])
  • ULTINFO: Última informação sobre o paciente (int = 1).

    1 – VIVO, COM CÂNCER

    2 – VIVO, SOE

    3 – OBITO POR CANCER

    4 – OBITO POR OUTRAS CAUSAS, SOE

[ ]:
df_aux.ULTINFO.value_counts()
2    435227
3    275159
4    123266
1    110008
Name: ULTINFO, dtype: int64
  • LATERALI: Lateralidade (int = 1).

    1 – DIREITA

    2 – ESQUERDA

    3 – BILATERAL

    8 - NÃO SE APLICA

[ ]:
df_aux.LATERALI.value_counts()
8    782219
1     81545
2     77560
3      2336
Name: LATERALI, dtype: int64
  • PERDASEG: Perda de seguimento (int = 1).

    0 – Não

    1 – Sim

    8 – Não se aplica (excluído do cálculo para o indicador perda de seguimento)

[ ]:
df_aux.PERDASEG.value_counts()
0    779799
1    163861
Name: PERDASEG, dtype: int64
[ ]:
df_aux[df_aux.PERDASEG == 1]['ULTINFO'].value_counts()
2    135234
1     28626
3         1
Name: ULTINFO, dtype: int64
  • ERRO: Admissão com erro (int = 1). 0 – Sem; 1 – Com

  • RECNENHUM: Sem recidiva (int = 1). 0 - Não; 1 - Sim

  • RECLOCAL: Recidiva local (int = 1). 0 - Não; 1 - Sim

  • RECREGIO: Recidiva regional (int = 1). 0 - Não; 1 - Sim

  • RECDIST: Recidiva a distância / metástase (int = 1). 0 - Não; 1 - Sim

[ ]:
df_aux.ERRO.unique() ### drop
array([0])
[ ]:
df_aux.RECNENHUM.value_counts()
1    865620
0     78040
Name: RECNENHUM, dtype: int64
[ ]:
df_aux.RECLOCAL.value_counts()
0    905606
1     38054
Name: RECLOCAL, dtype: int64
[ ]:
df_aux.RECREGIO.value_counts()
0    920649
1     23011
Name: RECREGIO, dtype: int64
[ ]:
df_aux.RECDIST.value_counts()
0    922660
1     21000
Name: RECDIST, dtype: int64

Categorias com letras

  • TRATAMENTO: Código de combinação dos tratamentos realizados (char = 1).

    A – Cirurgia

    B – Radioterapia

    C – Quimioterapia

    D – Cirurgia + Radioterapia

    E – Cirurgia + Quimioterapia

    F – Radioterapia + Quimioterapia

    G – Cirurgia + Radio + Quimio

    H – Cirurgia + Radio + Quimio + Hormonio

    I – Outras combinações de tratamento

    J – Nenhum tratamento realizado
  • TRATHOSP: Código de combinação dos tratamentos realizados no hospital (char = 1).

    A – Cirurgia

    B – Radioterapia

    C – Quimioterapia

    D – Cirurgia + Radioterapia

    E – Cirurgia + Quimioterapia

    F – Radioterapia + Quimioterapia

    G – Cirurgia + Radio + Quimio

    H – Cirurgia + Radio + Quimio + Hormonio

    I – Outras combinações de tratamento

    J – Nenhum tratamento realizado

  • TRATFANTES: Código de combinação dos tratamentos realizados antes/durante admissão fora do hospital (char = 1).

    A – Cirurgia

    B – Radioterapia

    C – Quimioterapia

    D – Cirurgia + Radioterapia

    E – Cirurgia + Quimioterapia

    F – Radioterapia + Quimioterapia

    G – Cirurgia + Radio + Quimio

    H – Cirurgia + Radio + Quimio + Hormonio

    I – Outras combinações de tratamento

    J – Nenhum tratamento realizado

    K – Sem informação

  • TRATFAPOS: Código de combinação dos tratamentos realizados após admissão fora do hospital (char = 1).

    A – Cirurgia

    B – Radioterapia

    C – Quimioterapia

    D – Cirurgia + Radioterapia

    E – Cirurgia + Quimioterapia

    F – Radioterapia + Quimioterapia

    G – Cirurgia + Radio + Quimio

    H – Cirurgia + Radio + Quimio + Hormonio

    I – Outras combinações de tratamento

    J – Nenhum tratamento realizado

    K – Sem informação

[ ]:
df_aux.TRATAMENTO.unique()
array(['A', 'F', 'B', 'D', 'G', 'I', 'J', 'C', 'E', 'H'], dtype=object)
[ ]:
df_aux.TRATHOSP.unique()
array(['A', 'F', 'B', 'D', 'G', 'I', 'J', 'C', 'E', 'H'], dtype=object)
[ ]:
df_aux.TRATFANTES.unique()
array(['J', 'A', 'B'], dtype=object)
[ ]:
df_aux.TRATFAPOS.unique()
array(['J', 'B', 'C', 'I', 'F', 'A', 'D', 'E', 'G', 'H'], dtype=object)

Números

  • IDADE: Idade do paciente (int = 3).

[ ]:
df_aux.IDADE.nunique()
109
[ ]:
df_aux[df_aux.IDADE.isnull() == True]
ESCOLARI IDADE SEXO UFNASC UFRESID IBGE CIDADE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP DESCTOPO MORFO DESCMORFO EC ECGRUP T N M PT PN PM S G LOCALTNM IDMITOTIC PSA GLEASON OUTRACLA META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO ... HORMOANT TMOANT IMUNOANT OUTROANT NENHUMAPOS CIRURAPOS RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP CICISUBGRU FAIXAETAR LATERALI INSTORIG DRS RRAS PERDASEG ERRO DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN CIDO DSCCIDO
125874 9 NaN 1 BA SP 3549904 SAO JOSE DOS CAMPOS 9 2011-11-16 24 2 2011-03-11 3 C619 C61 PROSTATA 85503 CARCINOMA DE CELULAS ACINOSAS IV IV 4 0 0 NaN NaN NaN 8 8 8 8 8 8 NaN NaN NaN NaN NaN 18/11/2011 8 I ... 0 0 0 0 1 0 0 0 0 0 0 0 2015-08-28 3 250 2.0 252.0 2011 XIF XI OUTROS NEOPLASMAS MALIGNOS EPITELIAIS E OU... F OUTROS CARCINOMAS E CARCINOMAS NAO ESPECIFI... 70+ 8 NaN DRS 17 TAUBATÉ 17 0 0 NaN 1 0 0 0 NaN NaN NaN NaN 3549904 85503.0 CARCINOMA DE CELULAS ACINOSAS

1 rows × 95 columns

  • CONSDIAG: Diferença em dias entre as datas de consulta o diagnóstico (num = dias).

  • TRATCONS: Diferença em dias entre as datas de consulta e tratamento (num = dias).

  • DIAGTRAT: Diferença em dias entre as datas de tratamento e diagnóstico (num = dias).

[ ]:
df_aux.CONSDIAG.isna().sum()
0
[ ]:
df_aux.TRATCONS.isna().sum()
74896
[ ]:
df_aux.TRATCONS.median()
39.0
[ ]:
df_aux.DIAGTRAT.isna().sum()
74896
[ ]:
df_aux.DIAGTRAT.median()
32.0
  • ANODIAG: Ano de diagnóstico (int = 4). Formato: 9999

[ ]:
np.sort(df_aux.ANODIAG.unique())
array([2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
       2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020])
  • IBGE: Código da cidade de residência do paciente segundo IBGE com digito verificador (int = 7).

  • IBGEATEN: Código IBGE da instituição (int = 7).

[ ]:
df_aux.IBGE.nunique()
2955
[ ]:
df_aux.IBGE.isna().sum()
0
[ ]:
df_aux.IBGEATEN.isna().sum()
0
[ ]:
df_aux.IBGEATEN.unique()
array([3509502, 3543402, 3554102, 3550308, 3506003, 3510609, 3530706,
       3547809, 3549904, 3552205, 3548708, 3548500, 3504503, 3507506,
       3507605, 3525904, 3503307, 3526902, 3538709, 3503208, 3505500,
       3516200, 3548906, 3525300, 3511102, 3549805, 3541406, 3529005,
       3524402, 3502804, 3522406, 3536208, 3552809, 3555000, 3530607,
       3518404, 3548807, 3543907, 3504008, 3513801, 3549102, 3518701,
       3534708, 3524808])
  • CIDO: Código da morfologia 3ª Edição (int = 5). Formato: 99999

  • MORFO: Código da morfologia (char = 5). Formato: 99999

[ ]:
df_aux.CIDO.isna().sum()
29
[ ]:
df_aux.CIDO.unique()
array([81402., 80703., 81403., 84803., 80102., 85003., 85303., 85202.,
       89303., 86201., 85203., 85002., 83803., 83103., 85603., 80763.,
       80103., 89803., 89503., 80723., 84403., 80503., 85103., 85703.,
       80772., 80203., 82113., 80702., 82603., 85901., 88003., 90703.,
       88903., 85033., 89333., 91001., 85043., 84413., 84603., 87203.,
       84621., 86231., 82013., 85223., 88013., 84421., 90203., 90603.,
       85012., 90803., 82303., 82513., 91013., 85423., 80713., 86501.,
       80903., 80413., 95913., 80513., 82003., 80333., 90201., 80013.,
       80003., 80001., 84721., 86203., 88323., 90003., 84703., 82012.,
       87303., 86211., 90801., 95813., 80502., 86301., 82463., 80753.,
       91203., 90713., 80762., 85403., 82623., 89103., 82302., 80743.,
       80223., 80983., 81203., 83843., 90643., 82403., 85233., 85013.,
       90813., 85042., 91003., 89313., 80053., 84823., 88913., 84013.,
       85753., 86401., 85133., 84713., 86313., 85032., 80523., 90853.,
       89361., 85213., 83203., 86403., 86703., 85222., 88053., 89353.,
       80133., 83233., 90503., 84073., 89013., 81482., 87463., 83801.,
       84903., 84503., 87113., 83133., 86343., 84631., 91103., 82453.,
       85243., 82553., 81413., 89903., 80733., 91053., 95903., 99503.,
       94403., 98203., 82203., 96503., 98633., 80123., 93913., 98353.,
       84813., 95603., 95303., 98233., 97023., 96753., 80933., 82473.,
       96633., 90613., 85503., 80423.,    nan, 97313., 94203., 92501.,
       90642., 80213., 82523., 80913., 80973., 97323., 96673., 96523.,
       83303., 94013., 96803., 96713., 94003., 88303., 88113., 90633.,
       83123., 87713., 96983., 81703., 82433., 94423., 96913., 81443.,
       82443., 96653., 90653., 96733., 95963., 96903., 96643., 90403.,
       84303., 98613., 80463., 96873., 82503., 80113., 97613., 90523.,
       97093., 90143., 96793., 98003., 94503., 96513., 97671., 95003.,
       80313., 93803., 81233., 99893., 80923., 87202., 93941., 94113.,
       81303., 97143., 95103., 99403., 83403., 84613., 85803., 81903.,
       89603., 87443., 94413., 94243., 89363., 91833., 94703., 87213.,
       82533., 88513., 88023., 82401., 85433., 80833., 81302., 98963.,
       83183., 81202., 83173., 91503., 94733., 95391., 93923., 99863.,
       99643., 99203., 96703., 81803., 98363., 87003., 91803., 98663.,
       98053., 99873., 98973., 99463., 98953., 86303., 99453., 85823.,
       84533., 98311., 96993., 89203., 96843., 83193., 81753., 91403.,
       97193., 81453., 92101., 81543., 92203., 82493., 95053., 97053.,
       84532., 82543., 81603., 85863., 93103., 83413., 97511., 88103.,
       90433., 85413., 88403., 82213., 96953., 94513., 93823., 94743.,
       93903., 82102., 99833., 83313., 82903., 83503., 83433., 99803.,
       84521., 85743., 88523., 96593., 97293., 83833., 81723., 82703.,
       98673., 82143., 98263., 83823., 80953., 82632., 83163., 94211.,
       91611., 80343., 89633., 98603., 81623., 98403., 85811., 87613.,
       88501., 91333., 92613., 81211., 93501., 80823., 80323., 97401.,
       92603., 89723., 84523., 88901., 81733., 88583., 99313., 89003.,
       85501., 97003., 92433., 90833., 91823., 82633., 83703., 88153.,
       92313., 98373., 81401., 93813., 81473., 98013., 83473., 90413.,
       92201., 97333., 89403., 95301., 85023., 95061., 88251., 97283.,
       84301., 90141., 95803., 89351., 80401., 99751., 88211., 89823.,
       85801., 94303., 89413., 83811., 88503., 88573., 80943., 87433.,
       81313., 97651., 88301., 80023., 85813., 95051., 87422., 93703.,
       86503., 80011., 84023., 99623., 85821., 97503., 89703., 91813.,
       89643., 90443., 94713., 97543., 93643., 81713., 95013., 97273.,
       91501., 93623., 91301., 94903., 89601., 92403., 95403., 88333.,
       95113., 88033., 95083., 92001., 91923., 88943., 98713., 99103.,
       87723., 93653., 86221., 88063., 98753., 88221., 91853., 98913.,
       98733., 94121., 95123., 89343., 95401., 98743., 89713., 93841.,
       89591., 89123., 95381., 93511., 95023., 98723., 97531., 92303.,
       88971., 99303., 95223., 88241., 91863., 94723., 89901., 89913.,
       86801., 88143., 98273., 90823., 99701., 80812., 81243., 83353.,
       92511., 83131., 88981., 81023., 91331., 90513., 84103., 87423.,
       83423., 97343., 80043., 99603., 81301., 84093., 80033., 97183.,
       92513., 91041., 99613., 89813., 82451., 91873., 90723., 83301.,
       80453., 97521., 89023., 92503., 80353., 81201., 85733., 80901.,
       85123., 82103., 86421., 91741., 80433., 88553., 96893., 85853.,
       83373., 83443., 86933., 85623., 88043., 97553., 83453., 96613.,
       91303., 85513., 85833., 81513., 86921., 81433., 92703., 88543.,
       86803., 84531., 86901., 85831., 88963., 87611., 87703., 99853.,
       97603., 88411., 91933., 88341., 83601., 82313., 93601., 93831.,
       88101., 94421., 93901., 94441., 90731., 87803., 99843., 84441.,
       97681., 89513., 85883., 97083., 89593., 85921., 82613., 96533.,
       98323., 97013., 81743., 80843., 91703., 81503., 98333., 90843.,
       97691., 81423., 96553., 80443., 90903., 85253., 97573., 94603.,
       88533., 98343., 81223., 92213., 95613., 93713., 83903., 82612.,
       84033., 97163., 84133., 99633., 93933., 90623., 85843., 81103.,
       95383., 83813., 87453., 93611., 87233., 81531., 94803., 80143.,
       92701., 86931., 97413., 80303., 84001., 97583., 84511., 95713.,
       94103., 82481., 92423., 90153., 84701., 85143., 85763., 82153.,
       85723., 88953., 87743., 85072., 84003., 83323., 98763., 82413.,
       97173., 85841., 91943., 95033., 90001., 84731., 83153., 87733.,
       81613., 99823., 87403., 90533., 93521., 85851., 87413., 99483.,
       89733., 93723., 92523., 87223., 88361., 86311., 80522., 87281.,
       80153., 84702., 90551., 91843., 97423., 95393., 88123., 90151.,
       95203., 85713., 97661., 95601., 85083., 88351., 87412., 81213.,
       91361., 90423., 82423., 85911., 96543., 86331., 83143., 96623.,
       84203., 82723., 84083., 96783., 95213., 97623., 98703., 83111.,
       97563., 86811., 97403., 86341., 93303., 82803., 95233., 80783.,
       88133., 83003., 82421., 89213., 86003., 83463., 81501., 83333.,
       81533., 81561., 91953., 81523.])
[ ]:
df_aux.MORFO.unique()
array([81402, 80703, 81403, 84803, 80102, 85003, 85303, 85202, 89303,
       86201, 85203, 85002, 83803, 83103, 85603, 80763, 80103, 89803,
       89503, 80723, 84403, 80503, 85103, 85703, 80772, 80203, 82113,
       80702, 82603, 85901, 88003, 90703, 88903, 85033, 89333, 91001,
       85043, 84413, 84603, 87203, 84623, 86231, 82013, 85223, 88013,
       84423, 90203, 90603, 85012, 90803, 82303, 82513, 91013, 85423,
       80713, 86501, 80903, 80413, 95913, 80513, 82003, 80333, 90201,
       80013, 80003, 80001, 84723, 86203, 88323, 90003, 84703, 82012,
       87303, 86211, 90801, 95813, 80502, 86301, 82463, 80753, 91203,
       90713, 80762, 85403, 82623, 89103, 82302, 80743, 80223, 80983,
       81203, 84421, 83843, 90643, 82403, 85233, 85013, 90813, 85042,
       91003, 89313, 80053, 84823, 88913, 84013, 85753, 86401, 85133,
       84713, 86313, 85032, 80523, 90853, 89361, 85213, 83203, 86403,
       86703, 85222, 88053, 89353, 80133, 83233, 90503, 84073, 89013,
       81482, 84721, 87463, 83801, 84903, 84503, 87113, 83133, 86343,
       84631, 91103, 82453, 85243, 82553, 81413, 89903, 80733, 91053,
       95903, 99501, 94403, 98203, 82203, 96503, 98633, 80123, 93913,
       98213, 84813, 95603, 95303, 98233, 97033, 96753, 80933, 82473,
       96633, 90613, 85503, 80423, 82611, 97313, 94203, 92501, 90642,
       80213, 82523, 80913, 80973, 97323, 96673, 96523, 83303, 94013,
       96803, 96713, 94003, 88303, 88113, 90633, 83123, 87713, 95953,
       96983, 81703, 82433, 94423, 96913, 81443, 82443, 96653, 90653,
       96733, 95963, 96903, 96643, 90403, 84303, 98613, 80463, 96873,
       82503, 80113, 97613, 90523, 97093, 90143, 96793, 98003, 94503,
       96513, 97671, 95003, 80313, 93803, 81233, 99891, 98223, 80923,
       87202, 93941, 94113, 81303, 97143, 95103, 99403, 83403, 84613,
       85803, 81903, 89603, 87443, 94413, 94243, 89363, 91833, 94703,
       87213, 82533, 88513, 88023, 82401, 97023, 85433, 80833, 81302,
       98963, 83183, 81202, 83173, 99893, 91503, 94733, 95391, 93923,
       99863, 98353, 99643, 99203, 96703, 81803, 98363, 87003, 91803,
       98663, 98053, 99873, 98973, 99463, 98953, 86303, 99453, 85823,
       84533, 98311, 96993, 89203, 96843, 83193, 81753, 91403, 97193,
       81453, 92101, 81543, 92203, 82493, 95053, 97053, 84532, 99503,
       82543, 81603, 85863, 93103, 83413, 97511, 88103, 90433, 85413,
       88403, 82213, 96953, 94513, 93823, 94743, 93903, 82102, 99833,
       83313, 82903, 83503, 83433, 99803, 84521, 85743, 88523, 96593,
       97293, 83833, 81723, 82703, 98673, 82143, 98263, 83823, 80953,
       82632, 83163, 94211, 91611, 80343, 89633, 98603, 81623, 98403,
       85811, 87613, 88501, 91333, 92613, 81211, 93501, 80823, 80323,
       97401, 92603, 89723, 84523, 88901, 81733, 88583, 99313, 89003,
       85501, 97003, 92433, 90833, 91823, 82633, 83703, 88153, 92313,
       98373, 81401, 93813, 81473, 98013, 83473, 90413, 92201, 97333,
       89403, 95301, 85023, 95061, 88251, 97283, 84301, 90141, 95803,
       89351, 80401, 99751, 88211, 89823, 85801, 94303, 89413, 83811,
       88503, 88573, 80943, 87433, 81313, 97651, 88301, 80023, 85813,
       95051, 87422, 93703, 86503, 80011, 84023, 99623, 85821, 97203,
       89703, 91813, 94213, 89643, 90443, 94713, 97223, 93643, 81713,
       95013, 96853, 91501, 93623, 91301, 94903, 89601, 92403, 95403,
       96573, 88333, 95113, 88033, 95083, 92001, 91923, 88943, 98713,
       99103, 87723, 93653, 86221, 97273, 88063, 98753, 88221, 91853,
       98913, 98733, 94121, 95123, 89343, 95401, 98743, 89713, 93841,
       97503, 89591, 89123, 95381, 93511, 95023, 98723, 97531, 92303,
       88971, 99303, 97543, 95223, 88241, 91863, 94723, 89901, 89913,
       86801, 88143, 98273, 90823, 99701, 80812, 81243, 84621, 83353,
       92511, 83131, 88981, 81023, 91331, 90513, 84103, 87423, 83423,
       97343, 80043, 99603, 81301, 84093, 80033, 97183, 92513, 91041,
       99613, 89813, 82451, 91873, 90723, 83301, 80453, 97521, 89023,
       92503, 80353, 81201, 85733, 80901, 85123, 82103, 86421, 91741,
       80433, 88553, 96893, 85853, 83373, 83443, 86933, 85623, 88043,
       97553, 83453, 96613, 91303, 85513, 85833, 81513, 86921, 81433,
       92703, 88543, 86803, 84531, 86901, 85831, 88963, 87611, 87703,
       99853, 97603, 88411, 91933, 88341, 83601, 82313, 93601, 93831,
       88101, 94421, 88231, 93901, 94441, 90731, 87803, 99843, 84441,
       97681, 89513, 85883, 97083, 89593, 85921, 99621, 82613, 97113,
       96723, 99601, 98243, 97133, 96813, 96533, 98683, 98253, 99611,
       99323, 97013, 96763, 81743, 80843, 91703, 98323, 81503, 98333,
       90843, 97691, 81423, 96553, 80443, 90903, 85253, 97573, 94603,
       88533, 98343, 81223, 92213, 95613, 93713, 83903, 82612, 84033,
       97163, 84133, 99633, 93933, 90623, 85843, 81103, 95383, 83813,
       87453, 93611, 98933, 96823, 87233, 93931, 96863, 99801, 81531,
       94803, 80143, 98303, 92701, 86931, 97413, 96583, 80303, 96933,
       84001, 97073, 97063, 96973, 96963, 97583, 84511, 95713, 94103,
       82481, 92423, 90153, 84701, 85143, 85763, 82153, 85723, 88953,
       87743, 85072, 84003, 83323, 98763, 82413, 97233, 97043, 96833,
       97173, 85841, 91943, 95033, 91903, 90001, 84731, 83153, 96923,
       87733, 98803, 99831, 81613, 99821, 87403, 90533, 93521, 85851,
       87413, 99483, 89733, 93723, 92523, 87223, 88361, 86311, 80522,
       87281, 80153, 84702, 90551, 98033, 85113, 91843, 97423, 95393,
       88123, 90151, 95203, 85713, 97661, 96943, 95601, 98623, 85083,
       98903, 88351, 87412, 99823, 81213, 91361, 90423, 98023, 82423,
       85911, 96543, 86331, 83143, 96623, 84203, 82723, 84083, 96783,
       94813, 95213, 97623, 84513, 98703, 83111, 97563, 96743, 86811,
       97403, 86341, 91341, 99841, 93303, 82803, 95233, 80783, 88133,
       83003, 82421, 89213, 86003, 83463, 81501, 98943, 83333, 81533,
       84733, 81561, 91953, 81523])
[ ]:
(df_aux.CIDO == df_aux.MORFO).value_counts()
True     940168
False      3492
dtype: int64
[ ]:
df_aux[(df_aux.CIDO == df_aux.MORFO) == False][['MORFO','CIDO']].head(10)
MORFO CIDO
628 84623 84621.0
740 84423 84421.0
812 84423 84421.0
1652 84423 84421.0
1739 84423 84421.0
1793 84423 84421.0
1843 84623 84621.0
2007 84423 84421.0
2016 84423 84421.0
2021 84423 84421.0
  • RRAS: RRAS (int = 200). [1,2,3, … ,16,17,99]

[ ]:
np.sort(df_aux.RRAS.unique())
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,
       99])
[ ]:
df_aux.RRAS.value_counts()
6     243705
12    105621
13    103141
9      79553
99     70975
15     59522
10     38266
1      31728
14     31086
17     30800
8      28936
2      27409
5      21975
7      19548
16     18373
4      14259
11     14104
3       4659
Name: RRAS, dtype: int64

Strings

  • UFNASC: UF de nascimento (char = 2). Outras opções: SI - Sem informação; OP - Outro país.

  • UFRESID: UF de residência (char = 2). Outras opções: OP - Outro país.

  • CIDADE: Cidade de residência do paciente (char = 200).

[ ]:
df_aux.UFNASC.unique()
array(['SP', 'RJ', 'MG', 'MA', 'AL', 'SE', 'CE', 'PE', 'PR', 'PB', 'BA',
       'PI', 'SI', 'OP', 'RS', 'MS', 'ES', 'GO', 'SC', 'AM', 'MT', 'RN',
       'TO', 'AP', 'DF', 'PA', 'RR', 'AC', 'RO'], dtype=object)
[ ]:
df_aux.UFRESID.unique()
array(['SP', 'MG', 'TO', 'MS', 'CE', 'BA', 'RO', 'PB', 'AL', 'ES', 'SC',
       'PR', 'MA', 'RJ', 'PI', 'RS', 'GO', 'MT', 'PE', 'SE', 'DF', 'PA',
       'AM', 'RN', 'RR', 'AC', 'OP', 'AP'], dtype=object)
[ ]:
df_aux.CIDADE.value_counts().head(10)
SAO PAULO                243705
SAO JOSE DO RIO PRETO     17339
CAMPINAS                  16972
RIBEIRAO PRETO            16260
GUARULHOS                 13592
JAU                       11695
BOTUCATU                  10102
OSASCO                     9686
PIRACICABA                 9518
BARRETOS                   9334
Name: CIDADE, dtype: int64
  • FAIXAETAR: Faixa etária do paciente (char = 5).

    00-09

    10-19

    20-29

    30-39

    40-49

    50-59

    60-69

    70+

[ ]:
df_aux.FAIXAETAR.unique()
array(['40-49', '60-69', '30-39', '70+', '50-59', '20-29', '10-19',
       '00-09'], dtype=object)
  • DRS: Departamentos Regionais de Saúde (char = 200).

    DRS 01 SĂO PAULO

    DRS 15 SĂO JOSÉ DO RIO PRETO

    DRS 06 BAURU

    DRS 07 CAMPINAS

    DRS 09 MARÍLIA

    DRS 13 RIBEIRĂO PRETO

    DRS 10 PIRACICABA

    DRS 17 TAUBATÉ

    DRS 16 SOROCABA

    DRS 05 BARRETOS

    DRS 03 ARARAQUARA

    DRS 02 ARAÇATUBA

    DRS 04 SANTOS

    DRS 14 SĂO JOĂO DA BOA VISTA

    DRS 08 FRANCA

    DRS 11 PRESIDENTE PRUDENTE

    DRS 12 REGISTRO

[ ]:
df_aux.DRS.unique()
array(['DRS 14  SĂO JOĂO DA BOA VISTA', 'DRS 07  CAMPINAS',
       'DRS 13  RIBEIRĂO PRETO', nan, 'DRS 10  PIRACICABA',
       'DRS 01  SĂO PAULO', 'DRS 17  TAUBATÉ', 'DRS 16  SOROCABA',
       'DRS 03  ARARAQUARA', 'DRS 04  SANTOS', 'DRS 06  BAURU',
       'DRS 15  SĂO JOSÉ DO RIO PRETO', 'DRS 12  REGISTRO',
       'DRS 09  MARÍLIA', 'DRS 02  ARAÇATUBA',
       'DRS 11  PRESIDENTE PRUDENTE', 'DRS 08  FRANCA',
       'DRS 05  BARRETOS'], dtype=object)
[ ]:
df_aux.DRS.isna().sum()
70975
  • DESCTOPO: Descrição da Topografia (char = 80).

  • DESCMORFO: Descrição da morfologia (char = 80).

  • DSCCIDO: Descrição da morfologia 3ª Edição (char = 89).

  • CICISUBGRU: Tumor infantil – Sub grupo (char = 80). [Descrição com letras e nome do tumor]

  • INSTORIG: Instituição de origem (char = 200). Obrigatório somente se DIAGPREV = 03 – COM DIAGNÓSTICO / COM TRATAMENTO

[ ]:
df_aux.DESCTOPO.value_counts().head(10)
PELE DE OUTRAS PARTES E DE PARTES NAO ESPECIFICADAS DA FACE    100718
PROSTATA                                                       100166
MAMA SOE EXCLUI PELE DA MAMA C445                               51634
COLO DO UTERO                                                   43448
MEDULA OSSEA                                                    33553
MAMA QUADRANTE SUPERIOR EXTERNO DA                              30512
PELE DO OMBRO E MEMBROS SUPERIORES                              27308
RETO SOE                                                        26979
PELE DO TRONCO                                                  22454
PULMAO SOE                                                      21971
Name: DESCTOPO, dtype: int64
[ ]:
df_aux.DESCMORFO.value_counts().head(10)
CARCINOMA ESCAMOCELULAR SOE            148805
ADENOCARCINOMA SOE                     131221
CARCINOMA BASOCELULAR SOE               97765
CARCINOMA DUCTAL INFILTRANTE SOE        91999
CARCINOMA DE CELULAS ACINOSAS           64829
ADENOCARCINOMA TUBULAR                  28346
CARCINOMA BASOCELULAR NODULAR           23730
CARCINOMA SOE                           23522
CARCINOMA ESCAMOCELULAR IN SITU SOE     16637
ADENOCARCINOMA PAPILAR SOE              10133
Name: DESCMORFO, dtype: int64
[ ]:
df_aux.DSCCIDO.value_counts().head(10)
CARCINOMA ESCAMOCELULAR SOE            152682
ADENOCARCINOMA SOE                     131221
CARCINOMA BASOCELULAR SOE               97765
CARCINOMA DUCTAL INFILTRANTE SOE        92006
CARCINOMA DE CELULAS ACINOSAS           64829
ADENOCARCINOMA TUBULAR                  28346
CARCINOMA BASOCELULAR NODULAR           23730
CARCINOMA SOE                           23522
CARCINOMA ESCAMOCELULAR IN SITU SOE     17026
ADENOCARCINOMA PAPILAR SOE              10133
Name: DSCCIDO, dtype: int64
[ ]:
(df_aux.DESCMORFO == df_aux.DSCCIDO).value_counts()
True     909031
False     34629
dtype: int64
[ ]:
df_aux[(df_aux.DESCMORFO == df_aux.DSCCIDO) == False][['DESCMORFO','DSCCIDO']].head(10)
DESCMORFO DSCCIDO
16 SARCOMA DO ESTROMA ENDOMETRIAL SARCOMA DO ESTROMA ENDOMETRIAL SOE
291 NEOPLASIA INTRAEPITELIAL GRAU III DE COLO UTER... NEOPLASIA INTRAEPITELIAL ESCAMOSA GRAU III
338 TUMOR DO ESTROMA DOS CORDOES SEXUAISL TUMOR DO ESTROMA DOS CORDOES SEXUAIS SOE
628 CISTADENOMA SEROSO PAPILAR DE MALIGNIDADE LIMI... TUMOR CISTICO PAPILAR SEROSO DE MALIGNIDADE LI...
740 CISTADENOMA SEROSO DE MALIGNIDADE LIMITROFE \"... CISTADENOMA SEROSO DE MALIGNIDADE LIMITROFE BO...
812 CISTADENOMA SEROSO DE MALIGNIDADE LIMITROFE \"... CISTADENOMA SEROSO DE MALIGNIDADE LIMITROFE BO...
1652 CISTADENOMA SEROSO DE MALIGNIDADE LIMITROFE \"... CISTADENOMA SEROSO DE MALIGNIDADE LIMITROFE BO...
1739 CISTADENOMA SEROSO DE MALIGNIDADE LIMITROFE \"... CISTADENOMA SEROSO DE MALIGNIDADE LIMITROFE BO...
1759 CARCINOMA PSEUDOSARCOMATOSO CARCINOMA PSEUDOSSARCOMATOSO
1763 TUMOR FILODES SOE TUMOR FILODES MALIGNIDADE LIMITROFE
[ ]:
df_aux.CICISUBGRU.unique()
array([nan, 'F  OUTROS CARCINOMAS E CARCINOMAS NAO ESPECIFICADOS',
       'C  TUMORES MALIGNOS DE CELULAS GERMINATIVAS GONADAIS',
       'B  TUMORES MALIGNOS DE CELULAS GERMINATIVAS EXTRACRANIANAS E EXTRAGONADAIS',
       'E  OUTROS TUMORES GONADAIS MALIGNOS E TUMORES GONADAIS NAO ESPECIFICADOS',
       'D  OUTROS SARCOMAS DE TECIDOS MOLES ESPECIFICADOS OUTROS SARCOMAS DE PARTES MOLES ESPECIFICADOS',
       'D  CARCINOMAS GONADAIS',
       'E  SARCOMAS DE TECIDOS MOLES NAO ESPECIFICADOS SARCOMAS DE PARTES MOLES NAO ESPECIFICADOS',
       'A  RABDOMIOSSARCOMAS RABDOMIOSSARCOMA E SARCOMA EMBRIONARIO',
       'B  OUTROS TUMORES MALIGNOS NAO ESPECIFICADOS',
       'A  OUTROS TUMORES MALIGNOS ESPECIFICADOS',
       'A  LEUCEMIAS LINFOIDES',
       'A  EPENDIMOMAS E TUMOR DO PLEXO COROIDE EPENDIMOMAS',
       'B  LINFOMAS NAOHODGKIN EXCETO LINFOMA DE BURKITT',
       'A  LINFOMAS DE HODGKIN DOENCA DE HODGKIN',
       'B  CARCINOMA DE TIREOIDE',
       'A  NEUROBLASTOMA E GANGLIONEUROBLASTOMA',
       'B  LEUCEMIAS MIELOIDES AGUDAS lEUCEMIAS NAO LINFOCITICAS AGUDAS',
       'B  ASTROCITOMAS', 'D  OUTROS GLIOMAS', 'A  RETINOBLASTOMA',
       'A  NEFROBLASTOMA E OUTROS TUMORES RENAIS NAO EPITELIAIS TUMOR DE WILMSTUMOR RABDOIDE E SARCOMA DE CELULAS CLARAS',
       'A  OSTEOSSARCOMAS',
       'C  TUMORES EMBRIONARIOS INTRACRANIANOS E INTRAESPINHAIS TUMORES NEUROECTODERMICOS PRIMITIVOS',
       'D  SINDROME MIELODISPLASICA E OUTRAS DOENCAS MIELOPROLIFERATIVAS',
       'C  DOENCAS CRONICAS MIELOPROLIFERATIVAS', 'C  LINFOMA DE BURKITT',
       'B  CONDROSSARCOMAS',
       'A  TUMORES DE CELULAS GERMINATIVAS INTRACRANIANOS E INTRAESPINHAIS',
       'F  NEOPLASIAS INTRACRANIANAS E INTRAESPINHAIS NAO ESPECIFICADAS',
       'C  CARCINOMA DE NASOFARINGE',
       'E  OUTRAS NEOPLASIAS INTRACRANIANAS E INTRAESPINHAIS ESPECIFICADAS',
       'C  TUMORES RENAIS MALIGNOS NAO ESPECIFICADOS',
       'E  TUMORES OSSEOS MALIGNOS NAO ESPECIFICADOS',
       'B  CARCINOMAS RENAIS',
       'E  LEUCEMIAS ESPECIFICADAS E OUTRAS NAO ESPECIFICADAS',
       'B  FIBROSSARCOMAS TUMORES DA BAINHA DO NERVO PERIFERICO E OUTRAS NEOPLASIAS FIBROMATOSAS',
       'D  MELANOMA MALIGNO', 'E  CARCINOMAS DE PELE',
       'D  MISCELANIA DE NEOPLASIAS LINFORETICULARES',
       'C  TUMOR DE EWING E SARCOMAS OSSEOS RELACIONADOS SARCOMA DE EWING',
       'A  HEPATOBLASTOMA', 'B  HEPATOCARCINOMA',
       'A  CARCINOMA DE CORTEX ADRENAL',
       'B  OUTROS TUMORES DE CELULAS NERVOSAS PERIFERICAS OUTROS TUMORES DO SISTEMA NERVOSO SIMPATICO',
       'D  OUTROS TUMORES OSSEOS MALIGNOS ESPECIFICADOS',
       'E  LINFOMAS NAO ESPECIFICADOS',
       'C  TUMORES HEPATICOS MALIGNOS NAO ESPECIFICADOS',
       'C  SARCOMA DE KAPOSI'], dtype=object)
[ ]:
df_aux.INSTORIG.unique()
array([nan, '020400  ASSOC FORN CANA DE PIRACICABA',
       '020737  FUND PIO XII', '999999  GOP', '999999  IGNORADO',
       '999999  AFIP GUARULHOS',
       '999999  INSTITUTO RH DE HEMATOLOGIA HEMOTERAPIA E QUIMIOTERAPIA',
       '000008  HOSP ISRAELITA ALBERT EINSTEIN', '999999  HOSPITAL LUZ',
       '999999  HOSPITAL SEPACO', '999999  HOSPITAL BRIGADEIRO',
       '999999  HOSPITAL REGIONAL DE OSASCO', '999999  HOSPITAL SAO LUIZ',
       '999999  CASA DE SAUDE SANTOS', '999999  HOSP CARLOS CHAGAS',
       '999999  HOSPITAL BENEFICENCIA PORTUGUESA', '016411  IBCC',
       '999999  HOSP PAULISTANO', '999999  IBCC',
       '999999  HOSPITAL METROPOLITANO', '999999  HOSPITAL SANTA RITA',
       '999999  HOSPITAL SAO CARLOS', '019054  HOSP REG VALE DO PARAIBA',
       '999999  HOSP REGIONAL DO VALE DO PARAIBA',
       '999999  SANTA CASA DE MISERICORDIA', '999999  HOSP SOBAM',
       '999999  HOSP PAULO SACRAMENTO', '999999  CLINICA BRAGALHA',
       '999999  BRAGALHA', '999999  IAP', '999999  CESM',
       '999999  CPC  PATOLOGIA  OLIMPIA', '999999  AME  BARRETOS',
       '999999  SANTA CASA DE BARRETOS', '999999  AME DE JALES SP',
       '999999  UNIMED', 'HC RIBEIRĂO PRETO SP',
       'FUNDACAO SANTA CASA DE MISERICORDIA DE FRANCA',
       'FUNDACAO SANTA CASA MISERICORDIA DE FRANCA',
       'FUNDAÇĂO SANTA CASA MISERICORDIA DE FRANCA',
       'FUNDACAO SANTA CASA MSIERICORDIA DE FRANCA',
       'FUNDACAO SANTA CASA MSERICORDIA DE FRANCA',
       'FUDNAÇĂO SANTA CASA MISERICORDIA DE FRANCA',
       'FUNDACAO SANTA CASA MISERICORDIA DE FRACA',
       'FUNDAÇĂO SANTA CASA MSIERICORDIA DE FRANCA',
       'FUNDAÇĂO SANTA CASA MISERICÓRDIA DE FRANCA', 'CONVĘNIO  IAMSPE',
       'AME FRANCA', 'HOSPITAL REGIONAL  FRANCA',
       'FUNDAÇAO SANTA CASA MISERICORDIA DE FRANCA',
       '999999  CLINICA PARTICULAR',
       '999999  CONSULTORIO PARTICULAR  JAU',
       '999999  CENTRO DE SAUDE SANTA CRUZ DO RIO PARDO',
       '999999  C S LUCELIA II', '999999  PARAGUAÇU PAULISTA  SANTA CASA',
       '999999  LEME  SANTA CASA',
       '999999  ANGATUBA  CONSULTORIO DR LUIZ ANTONIO',
       '999999  ITAPEVA  AMBULATORIO DERMATOLOGIA',
       '999999  ASSIS  HOSP MATERNIDADE',
       '999999  BOTUCATU  CLINICA SAAD',
       '999999  RIO CLARO  CONSULTORIO PARTICULAR',
       '999999  CLINICA PARTICULAR EM AVARE',
       '999999  SANTA CASA  CANDIDO MOTA',
       '999999  CENTRO DE SAUDE    RANCHARIA',
       '999999  SANTA CASA    TIETE', '999999  SANTA CASA  JAU',
       '999999  CONSULTORIO PARTICULAR    SAO MANUEL',
       '999999  PIRASSUNUNGA  CONSULTORIO PARTICULAR',
       '022950  HOSP CLINICAS DE MARILIA', '019100  SANTA CASA DE AVARE',
       '999999  MUZAMBIMNHO  MG', '999999  TUPĂ  CONSULTORIO',
       '999999  JAU  SANTA CASA', '999999  BAURU  HOSPITAL UNIMED',
       '999999  POLICLIN MENKS ANGATUBA',
       '999999  HOSPITAL UNIMED  AVARE',
       '999999  CONSULTORIO DE DERMATOLOGIA  JAU',
       '999999  CONSULTORIO PARTICULAR  ARARAQUARA',
       '999999  BAURU  ASSOC HOSPITALAR DE BAURU',
       '999999  PIRACICABA  AME', '999999  SANTA CASA DE JAU',
       '999999  HOSP SAO PAULO UNIMED ARARAQUARA',
       '999999  SANTA CASA DE DRACENA', '999999  HOSP GERAL DE PROMISSAO',
       '999999  CENTRO DE SAUDE  IBITINGA',
       '999999  HOSP UNIMED DE BAURU', '999999  BOITUVA',
       '999999  DR ARNALDO WAGNER DOS SANTOS',
       '999999  AME AMBULATORIO MEDICO DE ESPECIALIDADES',
       '999999  CLINICA DERMATOLOGICA  LINS', '999999  LAB MARICONDI',
       '999999  JAU  CONSULTORIO PARTICULAR',
       '999999  DR MARCIO  RIO CLARO', '020621  SANTA CASA DE ARARAQUARA',
       '999999  SANTA CASA DE SALTO',
       '999999  DRA LUCELIA MARIA DUTRA PINTO  SAGRES',
       '999999  SOCIEDADE DE BENEFICIENCIA  PIRAJU',
       '999999  AME AMBULATORIO MED DE ESPECIALIDADES DRACENA',
       '999999  CONSULTORIO PARTICULAR  BARIRI',
       '999999  SANTA CASA DE BATAGUASSU', '019160  HOSP CLINICAS  UNESP',
       '999999  TUPI PAULISTA  CLINICA PARTICULAR',
       '999999  JAU  POLICLÍNICA',
       '999999  LABORATORIO DE SAO JOSE DO RIO PRETO',
       '999999  ASSIS  AMBULATORIO DE ESPECIALIDADES', '999999  BROTAS',
       '999999  ITU  AEMII', '999999  ADAMANTINA', '999999  ARARAQUARA',
       '999999  SANTA CASA DE PENAPOLIS', '999999  CLINICA SAO LUCAS',
       '999999  SANTA CASA DE LEME', '000010  HOSP ESTADUAL DE BAURU',
       '999999  DRA JULIANA ROTHER DOIS CORREGOS',
       '999999  LABORATORIO DE ANALISES CLINICAS RIBEIRAO BRANCO',
       '999999  CENTRO DE SAUDE II IBITINGA',
       '999999  INST LAURO DE SOUZA LIMA',
       '999999  CONSULTORIO PARTICULAR  RIO CLARO',
       '999999  HOSP DE PIRAJU', '999999  SANTA CASA DE AGUAI',
       '999999  CONSULTORIO PARTICULAR  OURINHOS',
       '999999  LABORATORIO DR GILBERTO  RIO CLARO', '999999  OURINHOS',
       '999999  INSTITUIÇAO CARLOS ALBERTO CAVALLINI MENECHINO',
       '999999  CLINICA DE DERMATOLOGIA  LENCOIS PAULISTA',
       '999999  CENTRO DE SAUDE DE JUNQUEIROPOLIS',
       '999999  CS  SANTA GERTRUDES',
       '999999  CLINICA DR REINALDO DE BRITO',
       '999999  HOSP SAO FRANCISCO DE AMERICANA',
       '999999  ASSISSP  CONSULTORIO DR CARLOS',
       '999999  SAO CARLOS  DR JOSE ROBERTO C ALVAREZ',
       '999999  IBITINGA',
       '999999  CONSULT DR CASSIO EDVAN PAULINO DA SILVA',
       '999999  SANTA CASA DE PIRASSUNUNGA',
       '999999  FUNDACAO MUNICIPAL DE ENSINO SUPERIOR  MARILIA',
       '999999  SANTA CASA DE IBITINGA',
       '999999  AMBULATORIO DE ESPECIALIDADES  ASSIS',
       '999999  DR LUIZ H RODRIGUES',
       '999999  DR PAULO TEIXEIRA JUNIOR ASSIS',
       '999999  CLINICA DIA HOSP DOS FORNEC DE CANA PIRACICABA',
       '999999  LABORATORIA BACCHI', '999999  HEMOSC  SC', '999999  BURI',
       '999999  UNIMED  IBITINGA',
       '999999  HOSPITAL SANTA CASA DE PALMITAL',
       '999999  CENTRO DE SAUDE DE OSVALDO CRUZ',
       '999999  DRA SILVIA MARIA LARA DE LIMA GUIMARAES',
       '999999  CENTRO DE SAUDE  DRACENA',
       '999999  LABORATORIO SANTA ROSA  BOA VISTARR',
       '999999  DR WAGNER RODRIGO C OLIVEIRA', '999999  FORTALEZA',
       '999999  DR FABIANA SANCHES ZIROLDO  ITAPOLIS',
       '999999  DRŞ ANA PAULA FARIAS JORGE',
       '999999  DR MARIANA CAROLINA R MONTEIRO ARACATUBA',
       '999999  LABORATORIO SAO LUCAS ESPIRITO SANTO DO PINHAL',
       '999999  HOSPITAL SAO JOSE  BARRABONITA',
       '999999  SANTA CASA JAU SP', '999999  DR ORLEY ALCEU CAMARGO',
       '999999  OUTROS', '275513  HOSP REGIONAL DE PRESIDENTE PRUDENTE',
       '999999  UNIMED DE SAO PAULO', '009385  SANTA CASA DE SAO PAULO',
       '208259  HOSP MARCIA BRAIDO', '008672  HOSP SANTA MARCELINA',
       '000018  ITACI', '999999  SEM INFORMAÇĂO DO LOCAL',
       '999999  HOSP DE OSASCO', '999999  SEM INFORMAÇĂO',
       '017108  HOSP HELIOPOLIS',
       '999999  HOSP ESTADUAL DE VILA ALPINA ORG SOCIAL SECONCI SAO PAUL',
       '000014  HOSP SIRIO LIBANES',
       '999999  HOSP GERAL DE ITAPEVI  SANATORINHOS',
       '999999  HOSPITAL MANDAQUI', '999999  A C CAMARGO',
       '999999  HOSPITAL ALVORADA', '999999  CONJ HOSPITALAR MANDAQUI',
       '999999  CASA DA MULHER DINALVA SOUZA BARCELLOS',
       '999999  HOSPITAL GERAL DE ITAPEVI',
       '999999  HOSPITAL MUNICIPAL DE BARUERI',
       '999999  HOSPITAL REGIONAL DE COTIA', '999999  HOSPITAL BUTANTA',
       '999999  HOSPITAL GERAL DE CARAPUCUIBA',
       '999999  HOSPITAL MUNICIPAL CENTRO OSASCO',
       '999999  HOSP GERAL DE ITAPEVI', '999999  HOSPITAL ANTONIO GIGLIO',
       '037680  HOSP IPIRANGA', '999999  HOSPITAL SAO LUCAS BAURU',
       '999999  HOSPITAL GRAJAU', '999999  HOSP POLICIA MILITAR'],
      dtype=object)

Categorias com letras e números

  • TOPO: Código da topografia (char = 4). Formato: C999

  • TOPOGRUP: Grupo da topografia (char = 3). Formato: C99

[ ]:
df_aux.TOPO.nunique()
331
[ ]:
df_aux.TOPOGRUP.unique()
array(['C53', 'C54', 'C50', 'C51', 'C56', 'C52', 'C55', 'C58', 'C18',
       'C80', 'C77', 'C44', 'C48', 'C57', 'C76', 'C24', 'C34', 'C16',
       'C17', 'C21', 'C64', 'C67', 'C61', 'C71', 'C42', 'C20', 'C05',
       'C00', 'C72', 'C12', 'C47', 'C70', 'C15', 'C02', 'C32', 'C10',
       'C07', 'C09', 'C62', 'C25', 'C38', 'C41', 'C40', 'C04', 'C06',
       'C73', 'C19', 'C01', 'C49', 'C69', 'C22', 'C68', 'C31', 'C11',
       'C13', 'C74', 'C30', 'C65', 'C23', 'C37', 'C66', 'C60', 'C03',
       'C33', 'C08', 'C75', 'C63', 'C14', 'C26', 'C39'], dtype=object)
  • META01: Metástase (char = 3). Formato: C99

  • META02: Metástase (char = 3). Formato: C99

  • META03: Metástase (char = 3). Formato: C99

  • META04: Metástase (char = 3). Formato: C99

[ ]:
print(df_aux.META01.isna().sum())
print(df_aux.META02.isna().sum())
print(df_aux.META03.isna().sum())
print(df_aux.META04.isna().sum())
819742
906058
931625
940226
  • REC01: Local da recidiva/metástase (char = 3). Formato: C99

  • REC02: Local da recidiva/metástase (char = 3). Formato: C99

  • REC03: Local da recidiva/metástase (char = 3). Formato: C99

  • REC04: Local da recidiva/metástase (char = 3). Formato: C99

[ ]:
print(df_aux.REC01.isna().sum())
print(df_aux.REC02.isna().sum())
print(df_aux.REC03.isna().sum())
print(df_aux.REC04.isna().sum())
884451
926829
938376
942239
  • EC: Estadio clínico (char = 5). [0,IIIB,IA, …]

  • ECGRUP: Grupo do estadiamento clínico (char = 3). [0,I,II,III,IV,Y,X]

[ ]:
np.sort(df_aux.EC.unique())
array(['0', '0A', '0IS', 'I', 'IA', 'IA1', 'IA2', 'IB', 'IB1', 'IB2',
       'IC', 'II', 'IIA', 'IIA1', 'IIA2', 'IIB', 'IIC', 'III', 'IIIA',
       'IIIB', 'IIIC', 'IIIC1', 'IIIC2', 'IS', 'IV', 'IVA', 'IVB', 'IVC',
       'X', 'Y'], dtype=object)
[ ]:
np.sort(df_aux.ECGRUP.unique())
array(['0', 'I', 'II', 'III', 'IV', 'X', 'Y'], dtype=object)
  • T: Classificação TNM - T (char = 5). [0,1,3A,IS,PAGET, …]

  • N: Classificação TNM - N (char = 5). [0,X,Y,PN0,2C, …]

  • M: Classificação TNM - M (char = 3). [0,1,1A,1B,1C,X,Y]

[ ]:
np.sort(df_aux['T'].unique())
array(['0', '1', '1A', '1B', '1C', '1MIC', '2', '2A', '2B', '2C', '3',
       '3A', '3B', '3C', '4', '4A', '4B', '4C', '4D', '4E', 'A', 'CDIS',
       'CLIS', 'IS', 'PAGET', 'X', 'Y'], dtype=object)
[ ]:
np.sort(df_aux['N'].unique())
array(['0', '1', '1A', '1B', '1C', '2', '2A', '2B', '2C', '3', '3A', '3B',
       '3C', 'CN0', 'PN0', 'X', 'Y'], dtype=object)
[ ]:
np.sort(df_aux['M'].unique())
array(['0', '1', '1A', '1B', '1C', 'X', 'Y'], dtype=object)
  • PT: Estadiamento pós cirúrgico (char = 5). [1,2,X,Y,IS,2A, …]

  • PN: Estadiamento pós cirúrgico (char = 5). [0,1,1A,2C, …]

  • PM: Estadiamento pós cirúrgico (char = 3). [0,1,1A,1B,1C,M0,X,Y]

[ ]:
df_aux['PT'].unique()

# IC e 1C
array(['IS', 'X', nan, '2', '1', '4D', 'Y', '3', '1B', '4B', '3A', '1A',
       '1A2', '4A', '1A1', '2B', '1B1', '3B', '4C', '3C', '1C', '4', '0',
       '2A', '2C', '1B2', '1MIC', '< ...', 'A', 'CDIS', '4E', 'IC', 'PIS',
       'PAGET', 'CLIS', 'T2', 'T4B', 'T3B', 'T3', 'T1B', 'T1C', 'T1A',
       'y', '4b', '2b', '3a', 'AD', 1.0], dtype=object)
[ ]:
df_aux[df_aux['PT'] == '< ...'].shape
(1895, 95)
[ ]:
df_aux.PN.unique()
array(['0', 'X', nan, '1', '2', 'Y', '3', '3A', '2A', '2B', '3C', '3B',
       '< ...', '1B', '2C', '1A', '1C', 0.0, 'N0', 'N3', 'N2B', 'N1',
       '1Bi', 'PN0', '2c', 'O', '1B1', 'IBII'], dtype=object)
[ ]:
df_aux[df_aux['PN'] == '< ...'].shape
(1910, 95)
[ ]:
df_aux.PM.unique()
array(['0', 'X', nan, 'Y', '1', '1B', '< .', '1A', '1C', 0.0, 'M0'],
      dtype=object)
[ ]:
df_aux[df_aux['PM'] == '< .'].shape
(1922, 95)
  • OUTRACLA: Outra classificação de estadiamento (char = 20). [Grau 3, Grau I, Grau III, Clark II, …]

  • CICI: Tumor infantil (char = 5). [IA,VIIIA,XIF,IIC,IVB, …]

[ ]:
# Preenchidos OUTRACLA
df_aux.shape[0] - df_aux.OUTRACLA.isna().sum()
60799
[ ]:
### GRAU II, GRAU 2, G 2, G II
df_aux.OUTRACLA.value_counts().head(20)
GRAU II       6005
GRAU 2        4368
GRAU III      4160
GRAU 3        3451
GRAU I        2962
GRAU 1        2674
GLEASON 6     1810
GLEASON 7     1725
G II          1155
IV             842
DUKES C        734
G2             623
DUKES B        622
G III          522
G 2            494
GRAU 7         439
ALTO RISCO     433
III            428
GRAU 6         427
EC IV          372
Name: OUTRACLA, dtype: int64
[ ]:
df_aux.CICI.unique()
array([nan, 'XIF', 'XC', 'XB', 'XE', 'IXD', 'XD', 'IXE', 'IXA', 'XIIB',
       'XIIA', 'IA', 'IIIA', 'IIB', 'IIA', 'XIB', 'IVA', 'IB', 'IIIB',
       'IIID', 'VA', 'VIA', 'VIIIA', 'IIIC', 'ID', 'IC', 'IIC', 'VIIIB',
       'XA', 'IIIF', 'XIC', 'IIIE', 'VIC', 'VIIIE', 'VIB', 'IE', 'IXB',
       'XID', 'XIE', 'IID', 'VIIIC', 'VIIA', 'VIIB', 'XIA', 'IVB',
       'VIIID', 'IIE', 'VIIC', 'IXC'], dtype=object)
  • CICIGRUP: Tumor infantil – Grupo (char = 80). [I,II,III, … ,XI,XII]

[ ]:
df_aux.CICIGRUP.unique()
array([nan,
       'XI  OUTROS NEOPLASMAS MALIGNOS EPITELIAIS E OUTROS MELANOMAS MALIGNOS',
       'X  TUMORES DE CELULAS GERMINATIVAS TUMORES TROFOBLASTICOS E NEOPLASIAS GONADAIS',
       'IX  TECIDOS MOLES E OUTROS SARCOMAS EXTRAOSSEOS',
       'XII  OUTRAS NEOPLASIAS MALIGNAS E NAO ESPECIFICADAS',
       'I  LEUCEMIAS DOENCAS MIELOPROLIFERATIVAS E DOENCAS MIELODISPLASICAS',
       'III  SNC E MISCELANIA DE NEOPLASIAS INTRACRANIANAS E INTRAESPINHAIS',
       'II  LINFOMAS E NEOPLASIAS RETICULOENDOTELIAIS',
       'IV  NEUROBLASTOMA E OUTROS TUMORES DE CELULAS NERVOSAS PERIFERICAS TUMORES DO SISTEMA NERVOSO SIMPATICO',
       'V  RETINOBLASTOMA', 'VI  TUMORES RENAIS',
       'VIII  TUMORES OSSEOS MALIGNOS', 'VII  TUMORES HEPATICOS'],
      dtype=object)

Salvando os dados

[ ]:
df = variables_preprocessing(df_aux)
df.head()
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO QUIMIO HORMONIO TMO IMUNO OUTROS NENHUMANT CIRURANT RADIOANT NENHUMAPOS CIRURAPOS RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN
0 4 40.0 2 SP 3530805 9 2000-01-03 15 1 2000-01-10 3 C539 C53 81402 0 0 X X 0 IS 0 0 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 07/04/2000 8 A A J J 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2016-09-13 2 7 95.0 88.0 2000 **Sem informação** **Sem informação** 40-49 8 14 15 1 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
1 9 45.0 2 SP 3509502 9 2000-01-05 15 1 2000-01-17 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 20/01/2000 8 F F J J 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2002-08-25 3 12 15.0 3.0 2000 **Sem informação** **Sem informação** 40-49 8 7 15 0 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
2 2 63.0 2 SP 3509502 9 2000-01-19 15 1 2000-01-25 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 03/02/2000 8 B B J J 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2001-03-20 3 6 15.0 9.0 2000 **Sem informação** **Sem informação** 60-69 8 7 15 0 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
3 9 64.0 2 SP 3545803 9 2000-01-28 15 1 2000-02-03 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 01/03/2000 8 B B J J 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2002-07-15 3 6 33.0 27.0 2000 **Sem informação** **Sem informação** 60-69 8 7 15 0 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
4 1 48.0 2 SP 3530805 9 2000-01-04 15 2 2000-01-04 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 15/05/2000 8 B B J J 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2016-03-10 2 0 132.0 132.0 2000 **Sem informação** **Sem informação** 40-49 8 14 15 1 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
[ ]:
df.shape
(943660, 79)
[ ]:
df.isna().sum().sort_values(ascending=False).head(8)
DTRECIDIVA    848760
TRATCONS       74896
DTTRAT         74896
DIAGTRAT       74896
DTULTINFO         45
IDADE              1
PSA                0
PT                 0
dtype: int64
[ ]:
save_csv(df, '/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_preprocessing_dates.csv')
Arquivo csv salvo com sucesso!

Criação de labels e features

Captura de tela 2021-04-08 151322.png

[ ]:
df = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_preprocessing_dates.csv')
df.head()
(943660, 79)
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO QUIMIO HORMONIO TMO IMUNO OUTROS NENHUMANT CIRURANT RADIOANT NENHUMAPOS CIRURAPOS RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN
0 4 40.0 2 SP 3530805 9 2000-01-03 15 1 2000-01-10 3 C539 C53 81402 0 0 X X 0 IS 0 0 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 07/04/2000 8 A A J J 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2016-09-13 2 7 95.0 88.0 2000 **Sem informação** **Sem informação** 40-49 8 14 15 1 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
1 9 45.0 2 SP 3509502 9 2000-01-05 15 1 2000-01-17 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 20/01/2000 8 F F J J 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2002-08-25 3 12 15.0 3.0 2000 **Sem informação** **Sem informação** 40-49 8 7 15 0 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
2 2 63.0 2 SP 3509502 9 2000-01-19 15 1 2000-01-25 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 03/02/2000 8 B B J J 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2001-03-20 3 6 15.0 9.0 2000 **Sem informação** **Sem informação** 60-69 8 7 15 0 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
3 9 64.0 2 SP 3545803 9 2000-01-28 15 1 2000-02-03 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 01/03/2000 8 B B J J 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2002-07-15 3 6 33.0 27.0 2000 **Sem informação** **Sem informação** 60-69 8 7 15 0 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
4 1 48.0 2 SP 3530805 9 2000-01-04 15 2 2000-01-04 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 15/05/2000 8 B B J J 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2016-03-10 2 0 132.0 132.0 2000 **Sem informação** **Sem informação** 40-49 8 14 15 1 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
[ ]:
# Data - DTCONSULT, DTDIAG, DTTRAT, DTULTINFO, DTRECIDIVA
lista_datas = ['DTCONSULT', 'DTDIAG', 'DTTRAT', 'DTULTINFO', 'DTRECIDIVA']
df[lista_datas].isna().sum()
DTCONSULT          0
DTDIAG             0
DTTRAT         74896
DTULTINFO         45
DTRECIDIVA    848760
dtype: int64

Criação das features

Features das datas

  • Consulta - \(t_1\)

  • Diagnóstico - \(t_2\)

  • Tratamento - \(t_3\)

  • Recidiva - \(t_4\)

  • Última informação - \(t_5\)

    Diferenças, em dias, entre as datas:

\[\Delta t_1 = t_2 - t_1\]
\[\Delta t_2 = t_3 - t_2\]
\[\Delta t_3 = t_3 - t_1\]

Recidiva:

\[\Delta t_4 = t_4 - t_1\]
\[\Delta t_5 = t_4 - t_2\]
\[\Delta t_6 = t_4 - t_3\]

Última informação:

\[\Delta t_7 = t_5 - t_1\]
\[\Delta t_8 = t_5 - t_2\]
\[\Delta t_9 = t_5 - t_3\]
[ ]:
dates = ['DTCONSULT', 'DTDIAG', 'DTTRAT', 'CONSDIAG', 'DIAGTRAT', 'TRATCONS',
         'DTULTINFO', 'DTRECIDIVA', 'delta_t1', 'delta_t2', 'delta_t3', 'delta_t4',
         'delta_t5', 'delta_t6', 'delta_t7', 'delta_t8', 'delta_t9']

SP

[ ]:
df_SP = df[df.UFRESID == 'SP'].copy()
print(df_SP.shape)
df_SP.head(3)
(872683, 79)
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO QUIMIO HORMONIO TMO IMUNO OUTROS NENHUMANT CIRURANT RADIOANT NENHUMAPOS CIRURAPOS RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN
0 4 40.0 2 SP 3530805 9 2000-01-03 15 1 2000-01-10 3 C539 C53 81402 0 0 X X 0 IS 0 0 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 07/04/2000 8 A A J J 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2016-09-13 2 7 95.0 88.0 2000 **Sem informação** **Sem informação** 40-49 8 14 15 1 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
1 9 45.0 2 SP 3509502 9 2000-01-05 15 1 2000-01-17 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 20/01/2000 8 F F J J 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2002-08-25 3 12 15.0 3.0 2000 **Sem informação** **Sem informação** 40-49 8 7 15 0 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
2 2 63.0 2 SP 3509502 9 2000-01-19 15 1 2000-01-25 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 03/02/2000 8 B B J J 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2001-03-20 3 6 15.0 9.0 2000 **Sem informação** **Sem informação** 60-69 8 7 15 0 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
[ ]:
df_SP = get_dates_diff(df_SP)
print(df_SP.shape)
df_SP[dates].head()
(806402, 88)
DTCONSULT DTDIAG DTTRAT CONSDIAG DIAGTRAT TRATCONS DTULTINFO DTRECIDIVA delta_t1 delta_t2 delta_t3 delta_t4 delta_t5 delta_t6 delta_t7 delta_t8 delta_t9
0 2000-01-03 2000-01-10 2000-04-07 7 88.0 95.0 2016-09-13 NaT 7 88 95 NaN NaN NaN 6098 6091 6003
1 2000-01-05 2000-01-17 2000-01-20 12 3.0 15.0 2002-08-25 NaT 12 3 15 NaN NaN NaN 963 951 948
2 2000-01-19 2000-01-25 2000-02-03 6 9.0 15.0 2001-03-20 NaT 6 9 15 NaN NaN NaN 426 420 411
3 2000-01-28 2000-02-03 2000-03-01 6 27.0 33.0 2002-07-15 NaT 6 27 33 NaN NaN NaN 899 893 866
4 2000-01-04 2000-01-04 2000-05-15 0 132.0 132.0 2016-03-10 NaT 0 132 132 NaN NaN NaN 5910 5910 5778

Fora de SP

[ ]:
df_fora = df[df.UFRESID != 'SP'].copy()
print(df_fora.shape)
df_fora.head(3)
(70977, 79)
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO QUIMIO HORMONIO TMO IMUNO OUTROS NENHUMANT CIRURANT RADIOANT NENHUMAPOS CIRURAPOS RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN
15 5 56.0 2 MG 3167400 9 2000-01-19 33 1 2000-01-26 3 C509 C50 85202 I I 1 0 0 1 0 0 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 22/03/2000 8 D D J J 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2018-01-24 2 7 63.0 56.0 2000 **Sem informação** **Sem informação** 50-59 8 0 99 1 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
29 2 48.0 2 MG 3159605 9 2000-02-07 33 1 2000-03-09 3 C509 C50 80102 0 0 IS 0 0 IS 0 0 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 06/04/2000 8 A A J J 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2016-04-04 2 31 59.0 28.0 2000 **Sem informação** **Sem informação** 40-49 8 0 99 1 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
32 2 63.0 2 MG 3143401 9 2000-01-31 33 1 2000-02-09 2 C509 C50 80102 0 0 IS 0 0 IS 0 0 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 22/03/2000 8 A A J J 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 2016-09-14 2 9 51.0 42.0 2000 **Sem informação** **Sem informação** 60-69 8 0 99 1 NaN 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502
[ ]:
df_fora = get_dates_diff(df_fora)
print(df_fora.shape)
df_fora[dates].head(3)
(62317, 88)
DTCONSULT DTDIAG DTTRAT CONSDIAG DIAGTRAT TRATCONS DTULTINFO DTRECIDIVA delta_t1 delta_t2 delta_t3 delta_t4 delta_t5 delta_t6 delta_t7 delta_t8 delta_t9
15 2000-01-19 2000-01-26 2000-03-22 7 56.0 63.0 2018-01-24 NaT 7 56 63 NaN NaN NaN 6580 6573 6517
29 2000-02-07 2000-03-09 2000-04-06 31 28.0 59.0 2016-04-04 NaT 31 28 59 NaN NaN NaN 5901 5870 5842
32 2000-01-31 2000-02-09 2000-03-22 9 42.0 51.0 2016-09-14 NaT 9 42 51 NaN NaN NaN 6071 6062 6020

Histogramas

SP

[ ]:
fig = px.histogram(df_SP, x="delta_t1", marginal='box',
                   title='Diferença de dias entre diagnóstico e consulta')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_SP, x="delta_t2", marginal='box',
                   title='Diferença de dias entre tratamento e diagnóstico')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_SP, x="delta_t3", marginal='box',
                   title='Diferença de dias entre tratamento e consulta')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_SP, x="delta_t4", marginal='box',
                   title='Diferença de dias entre recidiva e consulta')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_SP, x="delta_t5", marginal='box',
                   title='Diferença de dias entre recidiva e diagnóstico')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_SP, x="delta_t6", marginal='box',
                   title='Diferença de dias entre recidiva e tratamento')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_SP, x="delta_t7", marginal='box',
                   title='Diferença de dias entre última informação e consulta')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_SP, x="delta_t8", marginal='box',
                   title='Diferença de dias entre última informação e diagnóstico')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_SP, x="delta_t9", marginal='box',
                   title='Diferença de dias entre última informação e tratamento')
fig.show(config = {'staticPlot': True})

Fora de SP

[ ]:
fig = px.histogram(df_fora, x="delta_t1", marginal='box',
                   title='Diferença de dias entre diagnóstico e consulta')

fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_fora, x="delta_t2", marginal='box',
                   title='Diferença de dias entre tratamento e diagnóstico')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_fora, x="delta_t3", marginal='box',
                   title='Diferença de dias entre tratamento e consulta')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_fora, x="delta_t4", marginal='box',
                   title='Diferença de dias entre recidiva e consulta')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_fora, x="delta_t5", marginal='box',
                   title='Diferença de dias entre recidiva e diagnóstico')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_fora, x="delta_t6", marginal='box',
                   title='Diferença de dias entre recidiva e tratamento')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_fora, x="delta_t7", marginal='box',
                   title='Diferença de dias entre última informação e consulta')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_fora, x="delta_t8", marginal='box',
                   title='Diferença de dias entre última informação e diagnóstico')
fig.show(config = {'staticPlot': True})
[ ]:
fig = px.histogram(df_fora, x="delta_t9", marginal='box',
                   title='Diferença de dias entre última informação e tratamento')
fig.show(config = {'staticPlot': True})

Criação dos labels de óbito

Labels óbito * Óbito em qualquer momento - ob

  • Ano do óbito em relação a data do diagnóstico - ano_ob

    • 0 - Paciente está vivo;

    • 1 - Óbito no primeiro ano;

    • 2 - Óbito no segundo ano;

    • 3 - Óbito no terceiro ano;

    • 4 - Óbito no quarto ano;

    • 5 - Óbito no quinto ano;

    • 6 - Óbito com mais de 5 ano;


Última informação

1 - VIVO, COM CÂNCER

2 – VIVO, SOE

3 – OBITO POR CANCER

4 – OBITO POR OUTRAS CAUSAS, SOE

SP

[ ]:
df_SP.head(2)
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO ... NENHUMAPOS CIRURAPOS RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN delta_t1 delta_t2 delta_t3 delta_t4 delta_t5 delta_t6 delta_t7 delta_t8 delta_t9
0 4 40.0 2 SP 3530805 9 2000-01-03 15 1 2000-01-10 3 C539 C53 81402 0 0 X X 0 IS 0 0 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 2000-04-07 8 A A J J 0 1 0 ... 1 0 0 0 0 0 0 0 2016-09-13 2 7 95.0 88.0 2000 **Sem informação** **Sem informação** 40-49 8 14 15 1 NaT 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502 7 88 95 NaN NaN NaN 6098 6091 6003
1 9 45.0 2 SP 3509502 9 2000-01-05 15 1 2000-01-17 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 2000-01-20 8 F F J J 0 0 1 ... 1 0 0 0 0 0 0 0 2002-08-25 3 12 15.0 3.0 2000 **Sem informação** **Sem informação** 40-49 8 7 15 0 NaT 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502 12 3 15 NaN NaN NaN 963 951 948

2 rows × 88 columns

[ ]:
df_SP.ULTINFO.value_counts()
2    384562
3    216244
4    109434
1     96162
Name: ULTINFO, dtype: int64
[ ]:
df_SP = get_labels(df_SP)
[ ]:
df_SP[df_SP.ob == 1].head(10)
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO ... RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN delta_t1 delta_t2 delta_t3 delta_t4 delta_t5 delta_t6 delta_t7 delta_t8 delta_t9 ob ano_ob
1 9 45.0 2 SP 3509502 9 2000-01-05 15 1 2000-01-17 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 2000-01-20 8 F F J J 0 0 1 ... 0 0 0 0 0 0 2002-08-25 3 12 15.0 3.0 2000 **Sem informação** **Sem informação** 40-49 8 7 15 0 NaT 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502 12 3 15 NaN NaN NaN 963 951 948 1 3
2 2 63.0 2 SP 3509502 9 2000-01-19 15 1 2000-01-25 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 2000-02-03 8 B B J J 0 0 1 ... 0 0 0 0 0 0 2001-03-20 3 6 15.0 9.0 2000 **Sem informação** **Sem informação** 60-69 8 7 15 0 NaT 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502 6 9 15 NaN NaN NaN 426 420 411 1 2
3 9 64.0 2 SP 3545803 9 2000-01-28 15 1 2000-02-03 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 2000-03-01 8 B B J J 0 0 1 ... 0 0 0 0 0 0 2002-07-15 3 6 33.0 27.0 2000 **Sem informação** **Sem informação** 60-69 8 7 15 0 NaT 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502 6 27 33 NaN NaN NaN 899 893 866 1 3
5 2 31.0 2 SP 3509502 9 2000-01-10 15 1 2000-01-17 3 C539 C53 81403 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 2000-01-31 8 B B J J 0 0 1 ... 0 0 0 0 0 0 2001-05-12 3 7 21.0 14.0 2000 **Sem informação** **Sem informação** 30-39 8 7 15 0 2000-12-22 0 0 1 0 C77 **Sem informação** **Sem informação** **Sem informação** 3509502 7 14 21 347.0 340.0 326.0 488 481 467 1 2
11 2 68.0 2 SP 3522604 2 2000-01-14 33 1 2000-01-21 3 C509 C50 85003 IV IV 4B 2 1 **Sem informação** **Sem informação** **Sem informação** 8 8 8 8 8 C22 C44 **Sem informação** **Sem informação** 2000-01-26 8 I I J J 0 1 0 ... 0 0 0 0 0 0 2008-01-31 3 7 12.0 5.0 2000 **Sem informação** **Sem informação** 60-69 8 14 15 0 2004-02-20 0 0 1 0 C71 C22 **Sem informação** **Sem informação** 3509502 7 5 12 1498.0 1491.0 1486.0 2939 2932 2927 1 6
13 3 77.0 2 SP 3509502 9 2000-01-05 33 2 2000-01-05 2 C509 C50 85003 I I 1 0 0 2 1 0 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 2000-02-02 8 I I J J 0 1 1 ... 0 0 0 0 0 0 2011-12-30 4 0 28.0 28.0 2000 **Sem informação** **Sem informação** 70+ 8 7 15 0 NaT 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502 0 28 28 NaN NaN NaN 4377 4377 4349 1 6
14 2 50.0 2 SP 3553302 9 2000-01-28 33 1 2000-01-31 3 C509 C50 85303 IIIB III 4D 1 0 4D 2 0 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 2000-04-10 8 G G J J 0 1 1 ... 0 0 0 0 0 0 2002-12-24 3 3 73.0 70.0 2000 **Sem informação** **Sem informação** 50-59 8 14 15 0 2001-10-08 0 1 0 0 C50 **Sem informação** **Sem informação** **Sem informação** 3509502 3 70 73 619.0 616.0 546.0 1061 1058 988 1 3
16 2 77.0 2 SP 3509502 9 2000-02-07 15 2 2000-02-07 3 C541 C54 89303 Y Y Y Y Y Y Y Y 8 8 8 8 8 C22 C34 **Sem informação** **Sem informação** 2000-04-03 8 A A J J 0 1 0 ... 0 0 0 0 0 0 2002-07-24 3 0 56.0 56.0 2000 **Sem informação** **Sem informação** 70+ 8 7 15 0 2001-08-16 1 0 0 0 C41 **Sem informação** **Sem informação** **Sem informação** 3509502 0 56 56 556.0 556.0 500.0 898 898 842 1 3
17 9 58.0 2 SP 3556701 9 2000-01-14 15 2 2000-01-14 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 2000-02-17 8 B B J J 0 0 1 ... 0 0 0 0 0 0 2005-06-21 3 0 34.0 34.0 2000 **Sem informação** **Sem informação** 50-59 8 7 15 0 2005-03-01 0 0 1 0 C77 C40 **Sem informação** **Sem informação** 3509502 0 34 34 1873.0 1873.0 1839.0 1985 1985 1951 1 6
18 9 70.0 2 SP 3532009 9 2000-02-29 15 1 2000-03-27 3 C539 C53 80703 IIB II X X 0 X X X 8 8 8 8 8 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 2000-04-17 8 B B J J 0 0 1 ... 0 0 0 0 0 0 2002-06-15 3 27 48.0 21.0 2000 **Sem informação** **Sem informação** 70+ 8 7 15 0 NaT 1 0 0 0 **Sem informação** **Sem informação** **Sem informação** **Sem informação** 3509502 27 21 48 NaN NaN NaN 837 810 789 1 3

10 rows × 90 columns

[ ]:
save_csv(df_SP, '/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_SP_labels.csv'

Fora de SP

[ ]:
df_fora.ULTINFO.value_counts()
2    37045
3    12820
1     7546
4     4906
Name: ULTINFO, dtype: int64
[ ]:
df_fora = get_labels(df_fora)
[ ]:
df_fora.head(2)
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO ... RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN delta_t1 delta_t2 delta_t3 delta_t4 delta_t5 delta_t6 delta_t7 delta_t8 delta_t9 ob ano_ob
15 5 56.0 2 MG 3167400 9 2000-01-19 33 1 2000-01-26 3 C509 C50 85202 I I 1 0 0 1 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-03-22 8 D D J J 0 1 1 ... 0 0 0 0 0 0 2018-01-24 2 7 63.0 56.0 2000 Sem informação Sem informação 50-59 8 0 99 1 NaT 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 7 56 63 NaN NaN NaN 6580 6573 6517 0 0
29 2 48.0 2 MG 3159605 9 2000-02-07 33 1 2000-03-09 3 C509 C50 80102 0 0 IS 0 0 IS 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-04-06 8 A A J J 0 1 0 ... 0 0 0 0 0 0 2016-04-04 2 31 59.0 28.0 2000 Sem informação Sem informação 40-49 8 0 99 1 NaT 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 31 28 59 NaN NaN NaN 5901 5870 5842 0 0

2 rows × 90 columns

[ ]:
df_fora[df_fora.ob == 1].head(10)
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO ... RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN delta_t1 delta_t2 delta_t3 delta_t4 delta_t5 delta_t6 delta_t7 delta_t8 delta_t9 ob ano_ob
41 2 52.0 2 MG 3108305 9 2000-01-19 33 1 2000-02-01 3 C509 C50 85003 IIA II 2 0 0 1 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-03-22 8 G G J J 0 1 1 ... 0 0 0 0 0 0 2007-02-04 4 13 63.0 50.0 2000 Sem informação Sem informação 50-59 8 0 99 0 2005-09-26 0 0 1 0 C71 C22 Sem informação Sem informação 3509502 13 50 63 2077.0 2064.0 2014.0 2573 2560 2510 1 6
53 9 52.0 2 MG 3113602 2 2000-03-28 33 1 2000-04-26 3 C509 C50 85003 IIA II 2 0 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-04-26 8 F F J J 0 0 1 ... 0 0 0 0 0 0 2012-12-31 4 29 29.0 0.0 2000 Sem informação Sem informação 50-59 8 0 99 0 NaT 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 29 0 29 NaN NaN NaN 4661 4632 4632 1 6
68 2 65.0 2 MG 3108305 2 2000-02-11 15 2 2000-02-11 3 C539 C53 80703 IIB II X X 0 Sem informação Sem informação Sem informação 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-04-14 8 B B J J 0 0 1 ... 0 0 0 0 0 0 2003-01-14 4 0 63.0 63.0 2000 Sem informação Sem informação 60-69 8 0 99 0 NaT 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 0 63 63 NaN NaN NaN 1068 1068 1005 1 3
79 2 63.0 2 MG 3151800 9 2000-03-16 15 2 2000-03-16 3 C519 C51 80703 III III X X 0 2 1 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-05-19 8 A A J J 0 1 0 ... 0 0 0 0 0 0 2001-12-15 4 0 64.0 64.0 2000 Sem informação Sem informação 60-69 8 0 99 0 NaT 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 0 64 64 NaN NaN NaN 639 639 575 1 2
83 9 67.0 2 TO 1702109 9 2000-05-05 15 1 2000-05-12 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-06-07 8 B B J J 0 0 1 ... 0 0 0 0 0 0 2002-12-30 4 7 33.0 26.0 2000 Sem informação Sem informação 60-69 8 0 99 0 NaT 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 7 26 33 NaN NaN NaN 969 962 936 1 3
87 1 77.0 2 MG 3102605 9 2000-04-03 33 2 2000-04-03 3 C509 C50 85003 IIIB III 4B 2 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-07-14 8 I I J J 0 0 1 ... 0 0 0 0 0 0 2000-10-17 3 0 102.0 102.0 2000 Sem informação Sem informação 70+ 8 0 99 0 NaT 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 0 102 102 NaN NaN NaN 197 197 95 1 1
97 2 83.0 2 MG 3102605 9 2000-03-30 33 2 2000-03-30 3 C509 C50 85003 IIIB III 4B 1 0 4B 1 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-05-03 8 D D J J 0 1 1 ... 0 0 0 0 0 0 2010-06-11 4 0 34.0 34.0 2000 Sem informação Sem informação 70+ 8 0 99 0 NaT 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 0 34 34 NaN NaN NaN 3725 3725 3691 1 6
104 9 54.0 2 MG 3143401 9 2000-02-14 33 1 2000-04-05 3 C509 C50 89803 Y Y Y Y Y Y Y Y 8 8 8 8 8 C34 Sem informação Sem informação Sem informação 2000-04-05 8 I I J J 0 1 0 ... 0 0 0 0 0 0 2003-07-20 4 51 51.0 0.0 2000 Sem informação Sem informação 50-59 8 0 99 0 2000-04-27 1 0 0 0 C34 Sem informação Sem informação Sem informação 3509502 51 0 51 73.0 22.0 22.0 1252 1201 1201 1 4
116 2 55.0 2 MG 3143807 9 2000-01-17 33 1 2000-04-05 3 C509 C50 85003 IIA II 2 0 0 2 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-04-05 8 E E J J 0 1 0 ... 0 0 0 0 0 0 2001-06-18 4 79 79.0 0.0 2000 Sem informação Sem informação 50-59 8 0 99 0 NaT 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 79 0 79 NaN NaN NaN 518 439 439 1 2
127 9 72.0 2 MG 3159605 9 2000-03-30 15 2 2000-03-30 3 C539 C53 80723 IIIB III X X 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-08-02 8 B B J J 0 0 1 ... 0 0 0 0 0 0 2012-12-30 4 0 125.0 125.0 2000 Sem informação Sem informação 70+ 8 0 99 0 NaT 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 0 125 125 NaN NaN NaN 4658 4658 4533 1 6

10 rows × 90 columns

[ ]:
save_csv(df_fora, '/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_foraSP_labels.csv')

Criação dos labels de recidiva

Labels recidiva * Óbito sem recidiva - ob_sem_rec

  • Óbito com recidiva - ob_com_rec

  • Vivos sem recidiva - vivo_sem_rec

  • Vivos com recidiva - vivo_com_rec

Última informação

1 - VIVO, COM CÂNCER

2 - VIVO, SOE

3 - OBITO POR CANCER

4 - OBITO POR OUTRAS CAUSAS, SOE

[ ]:
df_SP = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_SP_labels.csv')
df_fora = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_foraSP_labels.csv')

SP

[ ]:
df_SP.head(2)
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO ... RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN delta_t1 delta_t2 delta_t3 delta_t4 delta_t5 delta_t6 delta_t7 delta_t8 delta_t9 ob ano_ob
0 4 40.0 2 SP 3530805 9 2000-01-03 15 1 2000-01-10 3 C539 C53 81402 0 0 X X 0 IS 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-04-07 8 A A J J 0 1 0 ... 0 0 0 0 0 0 2016-09-13 2 7 95.0 88.0 2000 Sem informação Sem informação 40-49 8 14 15 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 7 88 95 NaN NaN NaN 6098 6091 6003 0 0
1 9 45.0 2 SP 3509502 9 2000-01-05 15 1 2000-01-17 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-01-20 8 F F J J 0 0 1 ... 0 0 0 0 0 0 2002-08-25 3 12 15.0 3.0 2000 Sem informação Sem informação 40-49 8 7 15 0 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 12 3 15 NaN NaN NaN 963 951 948 1 3

2 rows × 90 columns

[ ]:
df_SP = get_label_rec(df_SP)
[ ]:
df_SP.head()
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO ... IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN delta_t1 delta_t2 delta_t3 delta_t4 delta_t5 delta_t6 delta_t7 delta_t8 delta_t9 ob ano_ob ob_com_rec ob_sem_rec vivo_com_rec vivo_sem_rec
0 4 40.0 2 SP 3530805 9 2000-01-03 15 1 2000-01-10 3 C539 C53 81402 0 0 X X 0 IS 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-04-07 8 A A J J 0 1 0 ... 0 0 2016-09-13 2 7 95.0 88.0 2000 Sem informação Sem informação 40-49 8 14 15 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 7 88 95 NaN NaN NaN 6098 6091 6003 0 0 0 0 0 1
1 9 45.0 2 SP 3509502 9 2000-01-05 15 1 2000-01-17 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-01-20 8 F F J J 0 0 1 ... 0 0 2002-08-25 3 12 15.0 3.0 2000 Sem informação Sem informação 40-49 8 7 15 0 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 12 3 15 NaN NaN NaN 963 951 948 1 3 0 1 0 0
2 2 63.0 2 SP 3509502 9 2000-01-19 15 1 2000-01-25 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-02-03 8 B B J J 0 0 1 ... 0 0 2001-03-20 3 6 15.0 9.0 2000 Sem informação Sem informação 60-69 8 7 15 0 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 6 9 15 NaN NaN NaN 426 420 411 1 2 0 1 0 0
3 9 64.0 2 SP 3545803 9 2000-01-28 15 1 2000-02-03 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-03-01 8 B B J J 0 0 1 ... 0 0 2002-07-15 3 6 33.0 27.0 2000 Sem informação Sem informação 60-69 8 7 15 0 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 6 27 33 NaN NaN NaN 899 893 866 1 3 0 1 0 0
4 1 48.0 2 SP 3530805 9 2000-01-04 15 2 2000-01-04 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-05-15 8 B B J J 0 0 1 ... 0 0 2016-03-10 2 0 132.0 132.0 2000 Sem informação Sem informação 40-49 8 14 15 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 0 132 132 NaN NaN NaN 5910 5910 5778 0 0 0 0 0 1

5 rows × 94 columns

[ ]:
save_csv(df_SP, '/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_SP_labels.csv')
Arquivo csv salvo com sucesso!

Fora de SP

[ ]:
df_fora.head(2)
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO ... RADIOAPOS QUIMIOAPOS HORMOAPOS TMOAPOS IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN delta_t1 delta_t2 delta_t3 delta_t4 delta_t5 delta_t6 delta_t7 delta_t8 delta_t9 ob ano_ob
0 5 56.0 2 MG 3167400 9 2000-01-19 33 1 2000-01-26 3 C509 C50 85202 I I 1 0 0 1 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-03-22 8 D D J J 0 1 1 ... 0 0 0 0 0 0 2018-01-24 2 7 63.0 56.0 2000 Sem informação Sem informação 50-59 8 0 99 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 7 56 63 NaN NaN NaN 6580 6573 6517 0 0
1 2 48.0 2 MG 3159605 9 2000-02-07 33 1 2000-03-09 3 C509 C50 80102 0 0 IS 0 0 IS 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-04-06 8 A A J J 0 1 0 ... 0 0 0 0 0 0 2016-04-04 2 31 59.0 28.0 2000 Sem informação Sem informação 40-49 8 0 99 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 31 28 59 NaN NaN NaN 5901 5870 5842 0 0

2 rows × 90 columns

[ ]:
df_fora = get_label_rec(df_fora)
[ ]:
df_fora.head()
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO ... IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN delta_t1 delta_t2 delta_t3 delta_t4 delta_t5 delta_t6 delta_t7 delta_t8 delta_t9 ob ano_ob ob_com_rec ob_sem_rec vivo_com_rec vivo_sem_rec
0 5 56.0 2 MG 3167400 9 2000-01-19 33 1 2000-01-26 3 C509 C50 85202 I I 1 0 0 1 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-03-22 8 D D J J 0 1 1 ... 0 0 2018-01-24 2 7 63.0 56.0 2000 Sem informação Sem informação 50-59 8 0 99 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 7 56 63 NaN NaN NaN 6580 6573 6517 0 0 0 0 0 1
1 2 48.0 2 MG 3159605 9 2000-02-07 33 1 2000-03-09 3 C509 C50 80102 0 0 IS 0 0 IS 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-04-06 8 A A J J 0 1 0 ... 0 0 2016-04-04 2 31 59.0 28.0 2000 Sem informação Sem informação 40-49 8 0 99 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 31 28 59 NaN NaN NaN 5901 5870 5842 0 0 0 0 0 1
2 2 63.0 2 MG 3143401 9 2000-01-31 33 1 2000-02-09 2 C509 C50 80102 0 0 IS 0 0 IS 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-03-22 8 A A J J 0 1 0 ... 0 0 2016-09-14 2 9 51.0 42.0 2000 Sem informação Sem informação 60-69 8 0 99 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 9 42 51 NaN NaN NaN 6071 6062 6020 0 0 0 0 0 1
3 2 52.0 2 MG 3108305 9 2000-01-19 33 1 2000-02-01 3 C509 C50 85003 IIA II 2 0 0 1 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-03-22 8 G G J J 0 1 1 ... 0 0 2007-02-04 4 13 63.0 50.0 2000 Sem informação Sem informação 50-59 8 0 99 0 2005-09-26 0 0 1 0 C71 C22 Sem informação Sem informação 3509502 13 50 63 2077.0 2064.0 2014.0 2573 2560 2510 1 6 1 0 0 0
4 9 52.0 2 MG 3113602 2 2000-03-28 33 1 2000-04-26 3 C509 C50 85003 IIA II 2 0 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-04-26 8 F F J J 0 0 1 ... 0 0 2012-12-31 4 29 29.0 0.0 2000 Sem informação Sem informação 50-59 8 0 99 0 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 29 0 29 NaN NaN NaN 4661 4632 4632 1 6 0 1 0 0

5 rows × 94 columns

[ ]:
save_csv(df_fora, '/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_foraSP_labels.csv')
Arquivo csv salvo com sucesso!

Verificação dos dados criados

[ ]:
df_SP = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_SP_labels.csv')
df_fora = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_foraSP_labels.csv')
(806402, 94)
(62317, 94)
[ ]:
df_SP.head()
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO ... IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN delta_t1 delta_t2 delta_t3 delta_t4 delta_t5 delta_t6 delta_t7 delta_t8 delta_t9 ob ano_ob ob_com_rec ob_sem_rec vivo_com_rec vivo_sem_rec
0 4 40.0 2 SP 3530805 9 2000-01-03 15 1 2000-01-10 3 C539 C53 81402 0 0 X X 0 IS 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-04-07 8 A A J J 0 1 0 ... 0 0 2016-09-13 2 7 95.0 88.0 2000 Sem informação Sem informação 40-49 8 14 15 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 7 88 95 NaN NaN NaN 6098 6091 6003 0 0 0 0 0 1
1 9 45.0 2 SP 3509502 9 2000-01-05 15 1 2000-01-17 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-01-20 8 F F J J 0 0 1 ... 0 0 2002-08-25 3 12 15.0 3.0 2000 Sem informação Sem informação 40-49 8 7 15 0 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 12 3 15 NaN NaN NaN 963 951 948 1 3 0 1 0 0
2 2 63.0 2 SP 3509502 9 2000-01-19 15 1 2000-01-25 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-02-03 8 B B J J 0 0 1 ... 0 0 2001-03-20 3 6 15.0 9.0 2000 Sem informação Sem informação 60-69 8 7 15 0 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 6 9 15 NaN NaN NaN 426 420 411 1 2 0 1 0 0
3 9 64.0 2 SP 3545803 9 2000-01-28 15 1 2000-02-03 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-03-01 8 B B J J 0 0 1 ... 0 0 2002-07-15 3 6 33.0 27.0 2000 Sem informação Sem informação 60-69 8 7 15 0 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 6 27 33 NaN NaN NaN 899 893 866 1 3 0 1 0 0
4 1 48.0 2 SP 3530805 9 2000-01-04 15 2 2000-01-04 3 C539 C53 80703 IIIB III X X 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-05-15 8 B B J J 0 0 1 ... 0 0 2016-03-10 2 0 132.0 132.0 2000 Sem informação Sem informação 40-49 8 14 15 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 0 132 132 NaN NaN NaN 5910 5910 5778 0 0 0 0 0 1

5 rows × 94 columns

[ ]:
df_fora.head()
ESCOLARI IDADE SEXO UFRESID IBGE CATEATEND DTCONSULT CLINICA DIAGPREV DTDIAG BASEDIAG TOPO TOPOGRUP MORFO EC ECGRUP T N M PT PN PM G LOCALTNM IDMITOTIC PSA GLEASON META01 META02 META03 META04 DTTRAT NAOTRAT TRATAMENTO TRATHOSP TRATFANTES TRATFAPOS NENHUM CIRURGIA RADIO ... IMUNOAPOS OUTROAPOS DTULTINFO ULTINFO CONSDIAG TRATCONS DIAGTRAT ANODIAG CICI CICIGRUP FAIXAETAR LATERALI DRS RRAS PERDASEG DTRECIDIVA RECNENHUM RECLOCAL RECREGIO RECDIST REC01 REC02 REC03 REC04 IBGEATEN delta_t1 delta_t2 delta_t3 delta_t4 delta_t5 delta_t6 delta_t7 delta_t8 delta_t9 ob ano_ob ob_com_rec ob_sem_rec vivo_com_rec vivo_sem_rec
0 5 56.0 2 MG 3167400 9 2000-01-19 33 1 2000-01-26 3 C509 C50 85202 I I 1 0 0 1 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-03-22 8 D D J J 0 1 1 ... 0 0 2018-01-24 2 7 63.0 56.0 2000 Sem informação Sem informação 50-59 8 0 99 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 7 56 63 NaN NaN NaN 6580 6573 6517 0 0 0 0 0 1
1 2 48.0 2 MG 3159605 9 2000-02-07 33 1 2000-03-09 3 C509 C50 80102 0 0 IS 0 0 IS 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-04-06 8 A A J J 0 1 0 ... 0 0 2016-04-04 2 31 59.0 28.0 2000 Sem informação Sem informação 40-49 8 0 99 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 31 28 59 NaN NaN NaN 5901 5870 5842 0 0 0 0 0 1
2 2 63.0 2 MG 3143401 9 2000-01-31 33 1 2000-02-09 2 C509 C50 80102 0 0 IS 0 0 IS 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-03-22 8 A A J J 0 1 0 ... 0 0 2016-09-14 2 9 51.0 42.0 2000 Sem informação Sem informação 60-69 8 0 99 1 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 9 42 51 NaN NaN NaN 6071 6062 6020 0 0 0 0 0 1
3 2 52.0 2 MG 3108305 9 2000-01-19 33 1 2000-02-01 3 C509 C50 85003 IIA II 2 0 0 1 0 0 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-03-22 8 G G J J 0 1 1 ... 0 0 2007-02-04 4 13 63.0 50.0 2000 Sem informação Sem informação 50-59 8 0 99 0 2005-09-26 0 0 1 0 C71 C22 Sem informação Sem informação 3509502 13 50 63 2077.0 2064.0 2014.0 2573 2560 2510 1 6 1 0 0 0
4 9 52.0 2 MG 3113602 2 2000-03-28 33 1 2000-04-26 3 C509 C50 85003 IIA II 2 0 0 X X X 8 8 8 8 8 Sem informação Sem informação Sem informação Sem informação 2000-04-26 8 F F J J 0 0 1 ... 0 0 2012-12-31 4 29 29.0 0.0 2000 Sem informação Sem informação 50-59 8 0 99 0 NaN 1 0 0 0 Sem informação Sem informação Sem informação Sem informação 3509502 29 0 29 NaN NaN NaN 4661 4632 4632 1 6 0 1 0 0

5 rows × 94 columns

Features das datas

  • Consulta - \(t_1\)

  • Diagnóstico - \(t_2\)

  • Tratamento - \(t_3\)

  • Recidiva - \(t_4\)

  • Última informação - \(t_5\)

    Diferenças, em dias, entre as datas:

\[\Delta t_1 = t_2 - t_1\]
\[\Delta t_2 = t_3 - t_2\]
\[\Delta t_3 = t_3 - t_1\]

Recidiva:

\[\Delta t_4 = t_4 - t_1\]
\[\Delta t_5 = t_4 - t_2\]
\[\Delta t_6 = t_4 - t_3\]

Última informação:

\[\Delta t_7 = t_5 - t_1\]
\[\Delta t_8 = t_5 - t_2\]
\[\Delta t_9 = t_5 - t_3\]

SP

[ ]:
# Diagnóstico antes da consulta
df_SP[df_SP.delta_t1 < 0].shape
(252771, 94)
[ ]:
# Tratamento antes do diagnóstico
df_SP[df_SP.delta_t2 < 0].shape
(0, 94)
[ ]:
# Tratamento antes da consulta
df_SP[df_SP.delta_t3 < 0].shape
(0, 94)
[ ]:
# Recidiva antes da consulta
df_SP[df_SP.delta_t4 < 0].shape
(609, 94)
[ ]:
df_SP.delta_t4.isna().sum()
717377
[ ]:
# Recidiva antes do diagnóstico
df_SP[df_SP.delta_t5 < 0].shape
(124, 94)
[ ]:
df_SP.delta_t5.isna().sum()
717377
[ ]:
# Recidiva antes do tratamento
df_SP[df_SP.delta_t6 < 0].shape
(2159, 94)
[ ]:
df_SP.delta_t6.isna().sum()
717377
[ ]:
# Última informação antes da consulta
df_SP[df_SP.delta_t7 < 0].shape
(20, 94)
[ ]:
# # Última informação antes do diagnóstico
df_SP[df_SP.delta_t8 < 0].shape
(15, 94)
[ ]:
# Última informação antes do tratamento
df_SP[df_SP.delta_t9 < 0].shape
(468, 94)

Fora de SP

[ ]:
# Diagnóstico antes da consulta
df_fora[df_fora.delta_t1 < 0].shape
(24578, 94)
[ ]:
# Tratamento antes do diagnóstico
df_fora[df_fora.delta_t2 < 0].shape
(0, 94)
[ ]:
# Tratamento antes da consulta
df_fora[df_fora.delta_t3 < 0].shape
(0, 94)
[ ]:
# Recidiva antes da consulta
df_fora[df_fora.delta_t4 < 0].shape
(12, 94)
[ ]:
df_fora.delta_t4.isna().sum()
57799
[ ]:
# Recidiva antes do diagnóstico
df_fora[df_fora.delta_t5 < 0].shape
(4, 94)
[ ]:
df_fora.delta_t5.isna().sum()
57799
[ ]:
# Recidiva antes do tratamento
df_fora[df_fora.delta_t6 < 0].shape
(62, 94)
[ ]:
df_fora.delta_t6.isna().sum()
57799
[ ]:
# Última informação antes da consulta
df_fora[df_fora.delta_t7 < 0].shape
(2, 94)
[ ]:
# Última informação antes do diagnóstico
df_fora[df_fora.delta_t8 < 0].shape
(3, 94)
[ ]:
# Última informação antes do tratamento
df_fora[df_fora.delta_t9 < 0].shape
(169, 94)

Labels óbito

  • Óbito em qualquer momento - ob

  • Ano do óbito em relação a data do diagnóstico - ano_ob

    • 0 - Paciente está vivo;

    • 1 - Óbito no primeiro ano;

    • 2 - Óbito no segundo ano;

    • 3 - Óbito no terceiro ano;

    • 4 - Óbito no quarto ano;

    • 5 - Óbito no quinto ano;

    • 6 - Óbito com mais de 5 ano;

SP

[ ]:
df_SP.ob.value_counts()
0    480724
1    325678
Name: ob, dtype: int64
[ ]:
df_SP.ano_ob.value_counts()
0    480724
1    121819
2     67264
6     56871
3     37305
4     24567
5     17852
Name: ano_ob, dtype: int64

Fora de SP

[ ]:
df_fora.ob.value_counts()
0    44591
1    17726
Name: ob, dtype: int64
[ ]:
df_fora.ano_ob.value_counts()
0    44591
1     7294
2     3986
6     2230
3     2048
4     1300
5      868
Name: ano_ob, dtype: int64

Labels recidiva

  • Óbito sem recidiva - ob_sem_rec

  • Óbito com recidiva - ob_com_rec

  • Vivos sem recidiva - vivo_sem_rec

  • Vivos com recidiva - vivo_com_rec

SP

[ ]:
df_SP.ob_sem_rec.value_counts()
0    532957
1    273445
Name: ob_sem_rec, dtype: int64
[ ]:
df_SP.ob_com_rec.value_counts()
0    754169
1     52233
Name: ob_com_rec, dtype: int64
[ ]:
df_SP.vivo_sem_rec.value_counts()
1    459188
0    347214
Name: vivo_sem_rec, dtype: int64
[ ]:
df_SP.vivo_com_rec.value_counts()
0    784866
1     21536
Name: vivo_com_rec, dtype: int64

Fora de SP

[ ]:
df_fora.ob_sem_rec.value_counts()
0    46419
1    15898
Name: ob_sem_rec, dtype: int64
[ ]:
df_fora.ob_com_rec.value_counts()
0    60489
1     1828
Name: ob_com_rec, dtype: int64
[ ]:
df_fora.vivo_sem_rec.value_counts()
1    43239
0    19078
Name: vivo_sem_rec, dtype: int64
[ ]:
df_fora.vivo_com_rec.value_counts()
0    60965
1     1352
Name: vivo_com_rec, dtype: int64

Label = ob

Dados

[ ]:
df_SP = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_SP_labels.csv')
df_fora = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_foraSP_labels.csv')
(806402, 94)
(62317, 94)

SP

[ ]:
df_SP.isna().sum().sort_values(ascending=False).head(6)
DTRECIDIVA    717377
delta_t6      717377
delta_t5      717377
delta_t4      717377
IDADE              1
TRATAMENTO         0
dtype: int64
[ ]:
corr_matrix = df_SP.corr()
abs(corr_matrix['ob']).sort_values(ascending = False).head(20)
ob              1.000000
vivo_sem_rec    0.946549
ob_sem_rec      0.870247
ULTINFO         0.868236
ano_ob          0.750408
PERDASEG        0.378763
ob_com_rec      0.319736
ANODIAG         0.269601
CIRURGIA        0.249248
QUIMIO          0.244519
delta_t7        0.216269
delta_t8        0.216105
delta_t9        0.212633
CATEATEND       0.212081
RECNENHUM       0.196724
delta_t5        0.169360
delta_t4        0.167767
delta_t6        0.160751
RECREGIO        0.141924
IDADE           0.136383
Name: ob, dtype: float64
[ ]:
df_SP.ob.value_counts()
0    480724
1    325678
Name: ob, dtype: int64
[ ]:
df_SP['ob'][df_SP.PERDASEG == 1].value_counts()
0    140925
1         1
Name: ob, dtype: int64

Fora de SP

[ ]:
df_fora.isna().sum().sort_values(ascending=False).head(6)
DTRECIDIVA    57799
delta_t6      57799
delta_t5      57799
delta_t4      57799
NAOTRAT           0
LOCALTNM          0
dtype: int64
[ ]:
corr_matrix = df_fora.corr()
abs(corr_matrix['ob']).sort_values(ascending = False).head(20)
ob              1.000000
vivo_sem_rec    0.949190
ob_sem_rec      0.928200
ULTINFO         0.854305
ano_ob          0.772548
PERDASEG        0.359090
ob_com_rec      0.275720
CIRURGIA        0.257715
QUIMIO          0.253681
ANODIAG         0.252079
CATEATEND       0.209850
delta_t5        0.168003
delta_t8        0.167875
delta_t4        0.166380
delta_t7        0.165922
delta_t9        0.164855
delta_t6        0.163108
RECNENHUM       0.149262
RADIO           0.139862
GLEASON         0.104262
Name: ob, dtype: float64
[ ]:
df_fora.ob.value_counts()
0    44591
1    17726
Name: ob, dtype: int64
[ ]:
df_fora['ob'][df_fora.PERDASEG == 1].value_counts()
0    15263
Name: ob, dtype: int64

Divisão em treino e teste

[ ]:
list_drop = ['UFRESID', 'DTCONSULT', 'DTDIAG', 'DTTRAT', 'DTRECIDIVA', 'DTULTINFO',
              'IDADE', 'PERDASEG', 'CONSDIAG', 'TRATCONS', 'DIAGTRAT', 'delta_t4',
              'delta_t5', 'delta_t6', 'delta_t7', 'delta_t8', 'delta_t9', 'ano_ob',
              'ob_com_rec', 'ob_sem_rec', 'vivo_com_rec', 'vivo_sem_rec', 'ULTINFO']

lb = 'ob'

SP

[ ]:
X_trainSP, X_testSP, y_trainSP, y_testSP = get_train_test(df_SP, list_drop, lb)
X_train = (604801, 70), X_test = (201601, 70)
y_train = (604801,), y_test = (201601,)

Fora de SP

[ ]:
X_trainFora, X_testFora, y_trainFora, y_testFora = get_train_test(df_fora, list_drop, lb)
X_train = (46737, 70), X_test = (15580, 70)
y_train = (46737,), y_test = (15580,)

Encoder e normalização

SP

[ ]:
X_trainSP_enc, enc_SP, norm_SP = train_preprocessing(X_trainSP, normalizer='StandardScaler')

Fora de SP

[ ]:
X_trainFora_enc, enc_fora, norm_fora = train_preprocessing(X_trainFora, normalizer='StandardScaler')

PCA

SP

[ ]:
pca = PCA()
principalComponents = pca.fit_transform(X_trainSP_enc)
[ ]:
fig = go.Figure()

fig.add_trace(
    go.Scatter(
        x=np.linspace(1, 70, 70),
        y=np.cumsum(pca.explained_variance_ratio_),
        line_shape='hv',

    ))

fig.add_trace(
    go.Bar(
        x=np.linspace(1, 70, 70),
        y=pca.explained_variance_ratio_
    ))
fig.update_layout(yaxis_title='Variância que pode ser "explicada"', xaxis_title='Número de componentes principais')

fig.show()

Fora de SP

[ ]:
pca = PCA()
principalComponents = pca.fit_transform(X_trainFora_enc)
[ ]:
fig = go.Figure()

fig.add_trace(
    go.Scatter(
        x=np.linspace(1, 70, 70),
        y=np.cumsum(pca.explained_variance_ratio_),
        line_shape='hv',

    ))

fig.add_trace(
    go.Bar(
        x=np.linspace(1, 70, 70),
        y=pca.explained_variance_ratio_
    ))
fig.update_layout(yaxis_title='Variância que pode ser "explicada"', xaxis_title='Número de componentes principais')

fig.show()

Balanceamento dos dados

SP

[ ]:
# Quantidade de valores para cada label nos dados de treino
y_trainSP.value_counts()
0    360572
1    244229
Name: ob, dtype: int64
[ ]:
rus = RandomUnderSampler(random_state=seed)
X_SP, y_SP = rus.fit_sample(X_trainSP_enc, y_trainSP)
[ ]:
y_SP.shape
(488458,)

Fora de SP

[ ]:
# Quantidade de valores para cada label nos dados de treino
y_trainFora.value_counts()
0    33365
1    13372
Name: ob, dtype: int64
[ ]:
X_fora, y_fora = SMOTE(random_state=seed).fit_resample(X_trainFora_enc, y_trainFora)
[ ]:
y_fora.shape
(66730,)

Treinamento dos modelos de Machine Learning

Random Forest

[ ]:
# SP
rf_sp = RandomForestClassifier(random_state=seed)
rf_sp.fit(X_SP, y_SP)
RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None,
                       criterion='gini', max_depth=None, max_features='auto',
                       max_leaf_nodes=None, max_samples=None,
                       min_impurity_decrease=0.0, min_impurity_split=None,
                       min_samples_leaf=1, min_samples_split=2,
                       min_weight_fraction_leaf=0.0, n_estimators=100,
                       n_jobs=None, oob_score=False, random_state=10, verbose=0,
                       warm_start=False)
[ ]:
# Fora
rf_fora = RandomForestClassifier(random_state=seed, class_weight={0: 10, 1: 0.0001})
rf_fora.fit(X_fora, y_fora)
RandomForestClassifier(bootstrap=True, ccp_alpha=0.0,
                       class_weight={0: 10, 1: 0.0001}, criterion='gini',
                       max_depth=None, max_features='auto', max_leaf_nodes=None,
                       max_samples=None, min_impurity_decrease=0.0,
                       min_impurity_split=None, min_samples_leaf=1,
                       min_samples_split=2, min_weight_fraction_leaf=0.0,
                       n_estimators=100, n_jobs=None, oob_score=False,
                       random_state=10, verbose=0, warm_start=False)

XGBoost

[ ]:
# SP
xgboost_sp = xgb.XGBClassifier(max_depth=15, random_state=seed)

xgboost_sp.fit(X_SP, y_SP)
XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
              colsample_bynode=1, colsample_bytree=1, gamma=0,
              learning_rate=0.1, max_delta_step=0, max_depth=15,
              min_child_weight=1, missing=None, n_estimators=100, n_jobs=1,
              nthread=None, objective='binary:logistic', random_state=10,
              reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,
              silent=None, subsample=1, verbosity=1)
[ ]:
# Fora de SP
xgboost_fora = xgb.XGBClassifier(max_depth=15, scale_pos_weight=10,
                                 random_state=seed)

xgboost_fora.fit(X_fora, y_fora)
XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
              colsample_bynode=1, colsample_bytree=1, gamma=0,
              learning_rate=0.1, max_delta_step=0, max_depth=15,
              min_child_weight=1, missing=None, n_estimators=100, n_jobs=1,
              nthread=None, objective='binary:logistic', random_state=10,
              reg_alpha=0, reg_lambda=1, scale_pos_weight=10, seed=None,
              silent=None, subsample=1, verbosity=1)

Salvando modelos

[ ]:
#with open('/content/drive/MyDrive/Trabalho/Cancer/Modelos/models_SP.pkl', 'wb') as arq:
    #pickle.dump(
        #{'X_train': X_SP, 'y_train': y_SP, 'Encoders': enc_SP,
         #'Normalizer': norm_SP, 'Random Forest': rf_sp, 'XGB': xgboost_sp}, arq)
[ ]:
#with open('/content/drive/MyDrive/Trabalho/Cancer/Modelos/models_foraSP.pkl', 'wb') as arq:
    #pickle.dump(
        #{'X_train': X_fora, 'y_train': y_fora, 'Encoders': enc_fora,
         #'Normalizer': norm_fora, 'Random Forest': rf_fora, 'XGB': xgboost_fora}, arq)

Validação dos modelos

Pré-processamento dos dados de teste

[ ]:
# SP
X_testSP_ = test_preprocessing(X_testSP, enc_SP, norm_SP)
[ ]:
# Fora de SP
X_testFora_ = test_preprocessing(X_testFora, enc_fora, norm_fora)

Random Forest

[ ]:
plot_confusion_matrix(rf_sp, X_testSP_, y_testSP, cmap='Blues', normalize="true", values_format='.2f')
plt.show()
_images/Cancer_Models_412_0.png
[ ]:
plot_feat_importances(rf_sp, X_testSP)
_images/Cancer_Models_413_0.png
[ ]:
plot_confusion_matrix(rf_fora, X_testFora_, y_testFora, cmap='Blues', normalize="true", values_format='.2f')
plt.show()
_images/Cancer_Models_414_0.png
[ ]:
plot_feat_importances(rf_fora, X_testFora)
_images/Cancer_Models_415_0.png

XGBoost

[ ]:
plot_confusion_matrix(xgboost_sp, X_testSP_, y_testSP, cmap='Blues', normalize='true', values_format='.2f')
plt.show()
_images/Cancer_Models_417_0.png
[ ]:
plot_feat_importances(xgboost_sp, X_testSP)
_images/Cancer_Models_418_0.png
[ ]:
plot_confusion_matrix(xgboost_fora, X_testFora_, y_testFora, cmap='Blues', normalize="true", values_format='.2f')
plt.show()
_images/Cancer_Models_419_0.png
[ ]:
plot_feat_importances(xgboost_fora, X_testFora)
_images/Cancer_Models_420_0.png

Label = RECNENHUM

Dados

[ ]:
df_SP = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_SP_labels.csv')
df_fora = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_foraSP_labels.csv')
(806402, 94)
(62317, 94)

SP

[ ]:
df_SP.isna().sum().sort_values(ascending=False).head(6)
DTRECIDIVA    717377
delta_t6      717377
delta_t5      717377
delta_t4      717377
IDADE              1
TRATAMENTO         0
dtype: int64
[ ]:
corr_matrix = df_SP.corr()
abs(corr_matrix['RECNENHUM']).sort_values(ascending = False).head(20)
RECNENHUM       1.000000
ob_com_rec      0.829363
RECLOCAL        0.679652
RECREGIO        0.529338
vivo_com_rec    0.522025
RECDIST         0.497837
vivo_sem_rec    0.364914
ano_ob          0.242833
ob_sem_rec      0.227291
ob              0.196724
QUIMIO          0.147652
RADIO           0.085910
ULTINFO         0.081964
PERDASEG        0.070304
delta_t8        0.064934
delta_t7        0.063559
delta_t9        0.063466
IBGEATEN        0.062526
delta_t5        0.058940
delta_t4        0.055412
Name: RECNENHUM, dtype: float64

Fora de SP

[ ]:
df_fora.isna().sum().sort_values(ascending=False).head(6)
DTRECIDIVA    57799
delta_t6      57799
delta_t5      57799
delta_t4      57799
NAOTRAT           0
LOCALTNM          0
dtype: int64
[ ]:
corr_matrix = df_fora.corr()
abs(corr_matrix['RECNENHUM']).sort_values(ascending = False).head(20)
RECNENHUM       1.000000
ob_com_rec      0.749663
RECLOCAL        0.695533
vivo_com_rec    0.642191
RECDIST         0.579667
RECREGIO        0.430531
vivo_sem_rec    0.349104
ano_ob          0.217344
ob              0.149262
ob_sem_rec      0.135709
QUIMIO          0.130924
delta_t8        0.104972
delta_t9        0.103801
delta_t7        0.103667
delta_t5        0.087167
delta_t4        0.082168
delta_t6        0.081259
IDADE           0.074725
RADIO           0.074704
DIAGPREV        0.062018
Name: RECNENHUM, dtype: float64

Divisão em treino e teste

[ ]:
df_SP.RECNENHUM.value_counts()
1    732633
0     73769
Name: RECNENHUM, dtype: int64
[ ]:
n_samples = 400000
df_SP_rec = df_SP[df_SP.RECNENHUM == 1].sample(n_samples, random_state=seed).sort_index()
df_SP_sem_rec = df_SP[df_SP.RECNENHUM == 0]
df_SP_menor = pd.concat([df_SP_rec, df_SP_sem_rec]).sort_index()
df_SP_menor.RECNENHUM.value_counts()
1    400000
0     73769
Name: RECNENHUM, dtype: int64
[ ]:
df_fora.RECNENHUM.value_counts()
1    59137
0     3180
Name: RECNENHUM, dtype: int64
[ ]:
list_drop = ['UFRESID', 'DTCONSULT', 'DTDIAG', 'DTTRAT', 'DTRECIDIVA', 'DTULTINFO',
             'IDADE', 'PERDASEG', 'CONSDIAG', 'TRATCONS', 'DIAGTRAT', 'RECLOCAL',
             'RECREGIO', 'RECDIST', 'REC01', 'REC02', 'REC03', 'REC04', 'delta_t4',
             'delta_t5', 'delta_t6', 'delta_t7', 'delta_t8', 'delta_t9', 'ob', 'ano_ob',
             'ob_com_rec', 'ob_sem_rec', 'vivo_com_rec', 'vivo_sem_rec', 'ULTINFO']

label = 'RECNENHUM'

SP

[ ]:
X_trainSP, X_testSP, y_trainSP, y_testSP = get_train_test(df_SP_menor, list_drop, label)
X_train = (355326, 62), X_test = (118443, 62)
y_train = (355326,), y_test = (118443,)

Fora de SP

[ ]:
X_trainFora, X_testFora, y_trainFora, y_testFora = get_train_test(df_fora, list_drop, label)
X_train = (46737, 62), X_test = (15580, 62)
y_train = (46737,), y_test = (15580,)

Encoder e normalização

SP

[ ]:
X_trainSP_enc, enc_SP, norm_SP = train_preprocessing(X_trainSP, normalizer='StandardScaler')

Fora de SP

[ ]:
X_trainFora_enc, enc_fora, norm_fora = train_preprocessing(X_trainFora, normalizer='StandardScaler')

PCA

SP

[ ]:
pca = PCA()
principalComponents = pca.fit_transform(X_trainSP_enc)

fig = go.Figure()

fig.add_trace(
    go.Scatter(
        x=np.linspace(1, X_trainSP_enc.shape[0], X_trainSP_enc.shape[0]),
        y=np.cumsum(pca.explained_variance_ratio_),
        line_shape='hv',

    ))

fig.add_trace(
    go.Bar(
        x=np.linspace(1, X_trainSP_enc.shape[0], X_trainSP_enc.shape[0]),
        y=pca.explained_variance_ratio_
    ))
fig.update_layout(yaxis_title='Variância que pode ser "explicada"', xaxis_title='Número de componentes principais')

fig.show()

Fora de SP

[ ]:
pca = PCA()
principalComponents = pca.fit_transform(X_trainFora_enc)

fig = go.Figure()

fig.add_trace(
    go.Scatter(
        x=np.linspace(1, X_trainFora_enc.shape[0], X_trainFora_enc.shape[0]),
        y=np.cumsum(pca.explained_variance_ratio_),
        line_shape='hv',

    ))

fig.add_trace(
    go.Bar(
        x=np.linspace(1, X_trainFora_enc.shape[0], X_trainFora_enc.shape[0]),
        y=pca.explained_variance_ratio_
    ))
fig.update_layout(yaxis_title='Variância que pode ser "explicada"', xaxis_title='Número de componentes principais')

fig.show()

Balanceamento dos dados

SP

[ ]:
# Quantidade de valores para cada label nos dados de treino
y_trainSP.value_counts()
1    300057
0     55269
Name: RECNENHUM, dtype: int64
[ ]:
X_SP, y_SP = SMOTE(random_state=seed).fit_resample(X_trainSP_enc, y_trainSP)
[ ]:
y_SP.shape
(600114,)

Fora de SP

[ ]:
# Quantidade de valores para cada label nos dados de treino
y_trainFora.value_counts()
1    44367
0     2370
Name: RECNENHUM, dtype: int64
[ ]:
X_fora, y_fora = SMOTE(random_state=seed).fit_resample(X_trainFora_enc, y_trainFora)
[ ]:
y_fora.shape
(88734,)

Treinamento dos modelos de Machine Learning

Random Forest

[ ]:
# SP
rf_sp = RandomForestClassifier(random_state=seed,
                               class_weight={0: 20, 1: 0.00006})
rf_sp.fit(X_SP, y_SP)
RandomForestClassifier(bootstrap=True, ccp_alpha=0.0,
                       class_weight={0: 20, 1: 6e-05}, criterion='gini',
                       max_depth=None, max_features='auto', max_leaf_nodes=None,
                       max_samples=None, min_impurity_decrease=0.0,
                       min_impurity_split=None, min_samples_leaf=1,
                       min_samples_split=2, min_weight_fraction_leaf=0.0,
                       n_estimators=100, n_jobs=None, oob_score=False,
                       random_state=10, verbose=0, warm_start=False)
[ ]:
# Fora
rf_fora = RandomForestClassifier(random_state=seed,
                                 class_weight={0: 24, 1: 0.000022})
rf_fora.fit(X_fora, y_fora)
RandomForestClassifier(bootstrap=True, ccp_alpha=0.0,
                       class_weight={0: 24, 1: 2.2e-05}, criterion='gini',
                       max_depth=None, max_features='auto', max_leaf_nodes=None,
                       max_samples=None, min_impurity_decrease=0.0,
                       min_impurity_split=None, min_samples_leaf=1,
                       min_samples_split=2, min_weight_fraction_leaf=0.0,
                       n_estimators=100, n_jobs=None, oob_score=False,
                       random_state=10, verbose=0, warm_start=False)

XGBoost

[ ]:
# SP
xgboost_sp = xgb.XGBClassifier(max_depth=15,
                               scale_pos_weight=0.15,
                               random_state=seed)

xgboost_sp.fit(X_SP, y_SP)
XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
              colsample_bynode=1, colsample_bytree=1, gamma=0,
              learning_rate=0.1, max_delta_step=0, max_depth=15,
              min_child_weight=1, missing=None, n_estimators=100, n_jobs=1,
              nthread=None, objective='binary:logistic', random_state=10,
              reg_alpha=0, reg_lambda=1, scale_pos_weight=0.15, seed=None,
              silent=None, subsample=1, verbosity=1)
[ ]:
# Fora de SP
xgboost_fora = xgb.XGBClassifier(max_depth=15,
                                 scale_pos_weight=0.02, # 0.05 e 0.01
                                 random_state=seed)

xgboost_fora.fit(X_fora, y_fora)
XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
              colsample_bynode=1, colsample_bytree=1, gamma=0,
              learning_rate=0.1, max_delta_step=0, max_depth=15,
              min_child_weight=1, missing=None, n_estimators=100, n_jobs=1,
              nthread=None, objective='binary:logistic', random_state=10,
              reg_alpha=0, reg_lambda=1, scale_pos_weight=0.02, seed=None,
              silent=None, subsample=1, verbosity=1)

Validação dos modelos

Pré-processamento dos dados de teste

[ ]:
# SP
X_testSP_ = test_preprocessing(X_testSP, enc_SP, norm_SP)
[ ]:
# Fora de SP
X_testFora_ = test_preprocessing(X_testFora, enc_fora, norm_fora)

Random Forest

[ ]:
plot_confusion_matrix(rf_sp, X_testSP_, y_testSP, cmap='Blues', normalize="true", values_format='.2f')
plt.show()
_images/Cancer_Models_470_0.png
[ ]:
plot_feat_importances(rf_sp, X_testSP)
_images/Cancer_Models_471_0.png
[ ]:
plot_confusion_matrix(rf_fora, X_testFora_, y_testFora, cmap='Blues', normalize="true", values_format='.2f')
plt.show()
_images/Cancer_Models_472_0.png
[ ]:
plot_feat_importances(rf_fora, X_testFora)
_images/Cancer_Models_473_0.png

XGBoost

[ ]:
plot_confusion_matrix(xgboost_sp, X_testSP_, y_testSP, cmap='Blues', normalize="true", values_format='.2f')
plt.show()
_images/Cancer_Models_475_0.png
[ ]:
plot_feat_importances(xgboost_sp, X_testSP)
_images/Cancer_Models_476_0.png
[ ]:
plot_confusion_matrix(xgboost_fora, X_testFora_, y_testFora, cmap='Blues', normalize="true", values_format='.2f')
plt.show()
_images/Cancer_Models_477_0.png
[ ]:
plot_feat_importances(xgboost_fora, X_testFora)
_images/Cancer_Models_478_0.png

Label = RECDIST

Dados

[ ]:
df_SP = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_SP_labels.csv')
df_fora = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_foraSP_labels.csv')
(806402, 94)
(62317, 94)

SP

[ ]:
df_SP.isna().sum().sort_values(ascending=False).head(6)
DTRECIDIVA    717377
delta_t6      717377
delta_t5      717377
delta_t4      717377
IDADE              1
TRATAMENTO         0
dtype: int64
[ ]:
corr_matrix = df_SP.corr()
abs(corr_matrix['RECDIST']).sort_values(ascending = False).head(20)
RECDIST         1.000000
RECNENHUM       0.497837
ob_com_rec      0.427203
vivo_com_rec    0.238029
vivo_sem_rec    0.181668
ano_ob          0.119045
ob_sem_rec      0.113154
QUIMIO          0.109437
ob              0.105117
CATEATEND       0.093630
ANODIAG         0.084918
LATERALI        0.081624
RECLOCAL        0.058266
PERDASEG        0.055281
HORMONIO        0.045904
RRAS            0.043732
IBGEATEN        0.043044
RADIO           0.041206
delta_t5        0.040047
RADIOAPOS       0.038809
Name: RECDIST, dtype: float64

Fora de SP

[ ]:
df_fora.isna().sum().sort_values(ascending=False).head(6)
DTRECIDIVA    57799
delta_t6      57799
delta_t5      57799
delta_t4      57799
NAOTRAT           0
LOCALTNM          0
dtype: int64
[ ]:
corr_matrix = df_fora.corr()
abs(corr_matrix['RECDIST']).sort_values(ascending = False).head(20)
RECDIST         1.000000
RECNENHUM       0.579667
ob_com_rec      0.459205
vivo_com_rec    0.343707
vivo_sem_rec    0.202364
ano_ob          0.120521
QUIMIO          0.107406
ob              0.095742
CATEATEND       0.087712
ob_sem_rec      0.078666
LATERALI        0.073880
DIAGPREV        0.071119
ANODIAG         0.067613
RADIO           0.062403
RECLOCAL        0.050995
PERDASEG        0.047730
HORMONIO        0.046865
delta_t5        0.030107
DIAGTRAT        0.027065
delta_t2        0.027065
Name: RECDIST, dtype: float64

Divisão em treino e teste

[ ]:
df_SP.RECDIST.value_counts()
0    786768
1     19634
Name: RECDIST, dtype: int64
[ ]:
n_samples = 400000
df_SP_sem_rec = df_SP[df_SP.RECDIST == 0].sample(n_samples, random_state=seed).sort_index()
df_SP_rec = df_SP[df_SP.RECDIST == 1]
df_SP_menor = pd.concat([df_SP_rec, df_SP_sem_rec]).sort_index()
df_SP_menor.RECDIST.value_counts()
0    400000
1     19634
Name: RECDIST, dtype: int64
[ ]:
df_fora.RECDIST.value_counts()
0    61211
1     1106
Name: RECDIST, dtype: int64
[ ]:
list_drop = ['UFRESID', 'DTCONSULT', 'DTDIAG', 'DTTRAT', 'DTRECIDIVA', 'DTULTINFO',
              'IDADE', 'PERDASEG', 'CONSDIAG', 'TRATCONS', 'DIAGTRAT', 'RECNENHUM',
              'RECLOCAL', 'RECREGIO', 'REC01', 'REC02', 'REC03', 'REC04', 'delta_t4',
              'delta_t5', 'delta_t6', 'delta_t7', 'delta_t8', 'delta_t9', 'ob', 'ano_ob',
              'ob_com_rec', 'ob_sem_rec', 'vivo_com_rec', 'vivo_sem_rec', 'ULTINFO']

lb = 'RECDIST'

SP

[ ]:
X_trainSP, X_testSP, y_trainSP, y_testSP = get_train_test(df_SP_menor, list_drop, lb)
X_train = (314725, 62), X_test = (104909, 62)
y_train = (314725,), y_test = (104909,)

Fora de SP

[ ]:
X_trainFora, X_testFora, y_trainFora, y_testFora = get_train_test(df_fora, list_drop, lb)
X_train = (46737, 62), X_test = (15580, 62)
y_train = (46737,), y_test = (15580,)

Encoder e normalização

SP

[ ]:
X_trainSP_enc, enc_SP, norm_SP = train_preprocessing(X_trainSP, normalizer='StandardScaler')

Fora de SP

[ ]:
X_trainFora_enc, enc_fora, norm_fora = train_preprocessing(X_trainFora, normalizer='StandardScaler')

PCA

SP

[ ]:
pca = PCA()
principalComponents = pca.fit_transform(X_trainSP_enc)

fig = go.Figure()

fig.add_trace(
    go.Scatter(
        x=np.linspace(1, X_trainSP_enc.shape[0], X_trainSP_enc.shape[0]),
        y=np.cumsum(pca.explained_variance_ratio_),
        line_shape='hv',

    ))

fig.add_trace(
    go.Bar(
        x=np.linspace(1, X_trainSP_enc.shape[0], X_trainSP_enc.shape[0]),
        y=pca.explained_variance_ratio_
    ))
fig.update_layout(yaxis_title='Variância que pode ser "explicada"', xaxis_title='Número de componentes principais')

fig.show()

Fora de SP

[ ]:
pca = PCA()
principalComponents = pca.fit_transform(X_trainFora_enc)

fig = go.Figure()

fig.add_trace(
    go.Scatter(
        x=np.linspace(1, X_trainFora_enc.shape[0], X_trainFora_enc.shape[0]),
        y=np.cumsum(pca.explained_variance_ratio_),
        line_shape='hv',

    ))

fig.add_trace(
    go.Bar(
        x=np.linspace(1, X_trainFora_enc.shape[0], X_trainFora_enc.shape[0]),
        y=pca.explained_variance_ratio_
    ))
fig.update_layout(yaxis_title='Variância que pode ser "explicada"', xaxis_title='Número de componentes principais')

fig.show()

Balanceamento dos dados

SP

[ ]:
# Quantidade de valores para cada label nos dados de treino
y_trainSP.value_counts()
0    300054
1     14671
Name: RECDIST, dtype: int64
[ ]:
X_SP, y_SP = SMOTE(random_state=seed).fit_resample(X_trainSP_enc, y_trainSP)
[ ]:
y_SP.shape
(600108,)

Fora de SP

[ ]:
# Quantidade de valores para cada label nos dados de treino
y_trainFora.value_counts()
0    45898
1      839
Name: RECDIST, dtype: int64
[ ]:
X_fora, y_fora = SMOTE(random_state=seed).fit_resample(X_trainFora_enc, y_trainFora)
[ ]:
y_fora.shape
(91796,)

Treinamento dos modelos de Machine Learning

Random Forest

[ ]:
# SP
rf_sp = RandomForestClassifier(random_state=seed, class_weight={0: 0.00003, 1: 20})
rf_sp.fit(X_SP, y_SP)
RandomForestClassifier(bootstrap=True, ccp_alpha=0.0,
                       class_weight={0: 3e-05, 1: 20}, criterion='gini',
                       max_depth=None, max_features='auto', max_leaf_nodes=None,
                       max_samples=None, min_impurity_decrease=0.0,
                       min_impurity_split=None, min_samples_leaf=1,
                       min_samples_split=2, min_weight_fraction_leaf=0.0,
                       n_estimators=100, n_jobs=None, oob_score=False,
                       random_state=10, verbose=0, warm_start=False)
[ ]:
# Fora
rf_fora = RandomForestClassifier(random_state=seed, class_weight={0: 0.00001, 1: 24})
rf_fora.fit(X_fora, y_fora)
RandomForestClassifier(bootstrap=True, ccp_alpha=0.0,
                       class_weight={0: 1e-05, 1: 24}, criterion='gini',
                       max_depth=None, max_features='auto', max_leaf_nodes=None,
                       max_samples=None, min_impurity_decrease=0.0,
                       min_impurity_split=None, min_samples_leaf=1,
                       min_samples_split=2, min_weight_fraction_leaf=0.0,
                       n_estimators=100, n_jobs=None, oob_score=False,
                       random_state=10, verbose=0, warm_start=False)

XGBoost

[ ]:
# SP
xgboost_sp = xgb.XGBClassifier(max_depth=15,
                               scale_pos_weight=10_000,
                               random_state=seed)

xgboost_sp.fit(X_SP, y_SP)
XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
              colsample_bynode=1, colsample_bytree=1, gamma=0,
              learning_rate=0.1, max_delta_step=0, max_depth=15,
              min_child_weight=1, missing=None, n_estimators=100, n_jobs=1,
              nthread=None, objective='binary:logistic', random_state=10,
              reg_alpha=0, reg_lambda=1, scale_pos_weight=10000, seed=None,
              silent=None, subsample=1, verbosity=1)
[ ]:
# Fora de SP
xgboost_fora = xgb.XGBClassifier(max_depth=15,
                                 scale_pos_weight=300_000,
                                 random_state=seed)

xgboost_fora.fit(X_fora, y_fora)
XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
              colsample_bynode=1, colsample_bytree=1, gamma=0,
              learning_rate=0.1, max_delta_step=0, max_depth=15,
              min_child_weight=1, missing=None, n_estimators=100, n_jobs=1,
              nthread=None, objective='binary:logistic', random_state=10,
              reg_alpha=0, reg_lambda=1, scale_pos_weight=300000, seed=None,
              silent=None, subsample=1, verbosity=1)

Validação dos modelos

Pré-processamento dos dados de teste

[ ]:
# SP
X_testSP_ = test_preprocessing(X_testSP, enc_SP, norm_SP)
[ ]:
# Fora de SP
X_testFora_ = test_preprocessing(X_testFora, enc_fora, norm_fora)

Random Forest

[ ]:
plot_confusion_matrix(rf_sp, X_testSP_, y_testSP, cmap='Blues', normalize="true", values_format='.2f')
plt.show()
_images/Cancer_Models_528_0.png
[ ]:
plot_feat_importances(rf_sp, X_testSP)
_images/Cancer_Models_529_0.png
[ ]:
plot_confusion_matrix(rf_fora, X_testFora_, y_testFora, cmap='Blues', normalize="true", values_format='.2f')
plt.show()
_images/Cancer_Models_530_0.png
[ ]:
plot_feat_importances(rf_fora, X_testFora)
_images/Cancer_Models_531_0.png

XGBoost

[ ]:
plot_confusion_matrix(xgboost_sp, X_testSP_, y_testSP, cmap='Blues', normalize="true", values_format='.2f')
plt.show()
_images/Cancer_Models_533_0.png
[ ]:
plot_feat_importances(xgboost_sp, X_testSP)
_images/Cancer_Models_534_0.png
[ ]:
plot_confusion_matrix(xgboost_fora, X_testFora_, y_testFora, cmap='Blues', normalize="true", values_format='.2f')
plt.show()
_images/Cancer_Models_535_0.png
[ ]:
plot_feat_importances(xgboost_fora, X_testFora)
_images/Cancer_Models_536_0.png

Regressão - Delta t7

Diferença de dias entre última informação e consulta

Dados

[ ]:
df_SP = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_SP_labels.csv')
df_fora = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_foraSP_labels.csv')
(806402, 94)
(62317, 94)

SP

[ ]:
df_SP.isna().sum().sort_values(ascending=False).head(6)
DTRECIDIVA    717377
delta_t6      717377
delta_t5      717377
delta_t4      717377
IDADE              1
TRATAMENTO         0
dtype: int64

Fora de SP

[ ]:
df_fora.isna().sum().sort_values(ascending=False).head(6)
DTRECIDIVA    57799
delta_t6      57799
delta_t5      57799
delta_t4      57799
NAOTRAT           0
LOCALTNM          0
dtype: int64

Divisão em treino e teste

[ ]:
list_drop = ['UFRESID', 'DTCONSULT', 'DTDIAG', 'DTTRAT', 'DTRECIDIVA', 'DTULTINFO',
              'IDADE', 'PERDASEG', 'CONSDIAG', 'TRATCONS', 'DIAGTRAT', 'delta_t4',
              'delta_t5', 'delta_t6', 'delta_t8', 'delta_t9', 'ob', 'ano_ob',
              'ob_com_rec', 'ob_sem_rec', 'vivo_com_rec', 'vivo_sem_rec', 'ULTINFO']

lb = 'delta_t7'

SP

[ ]:
X_trainSP, X_testSP, y_trainSP, y_testSP = get_train_test(df_SP, list_drop, lb)
X_train = (604801, 70), X_test = (201601, 70)
y_train = (604801,), y_test = (201601,)

Fora de SP

[ ]:
X_trainFora, X_testFora, y_trainFora, y_testFora = get_train_test(df_fora, list_drop, lb)
X_train = (46737, 70), X_test = (15580, 70)
y_train = (46737,), y_test = (15580,)

Encoder e normalização

SP

[ ]:
X_trainSP_enc, enc_SP, norm_SP = train_preprocessing(X_trainSP, normalizer='StandardScaler')

Fora de SP

[ ]:
X_trainFora_enc, enc_fora, norm_fora = train_preprocessing(X_trainFora, normalizer='StandardScaler')

Treinamento dos modelos de Machine Learning

[ ]:
X_testSP_ = test_preprocessing(X_testSP, enc_SP, norm_SP)
X_testFora_ = test_preprocessing(X_testFora, enc_fora, norm_fora)

Regressão Linear

[ ]:
# SP
lr_sp = LinearRegression()
lr_sp.fit(X_trainSP_enc, y_trainSP)

df = validate_regression(X_testSP_, lr_sp, y_testSP)
df.head()
Mean Absolute Error: 917.533
Mean Squared Error: 1440077.136
Root Mean Squared Error: 1200.032
Score: 0.297
Atual Predito
400744 1601 1213.106632
369215 821 270.016300
387264 607 1797.295841
296234 450 -45.373349
712621 950 1596.070987
[ ]:
# Fora
lr_fora = LinearRegression()
lr_fora.fit(X_trainFora_enc, y_trainFora)

df = validate_regression(X_testFora_, lr_fora, y_testFora)
df.head()
Mean Absolute Error: 812.895
Mean Squared Error: 1189460.535
Root Mean Squared Error: 1090.624
Score: 0.320
Atual Predito
1077 725 762.625683
15361 937 2304.641308
3301 0 488.617871
32432 3338 1914.063183
39694 649 1625.637402

Random Forest Regressor

[ ]:
# SP
rfr_sp = RandomForestRegressor(random_state=seed, max_depth=10)
rfr_sp.fit(X_trainSP_enc, y_trainSP)

df = validate_regression(X_testSP_, rfr_sp, y_testSP)
df.head()
Mean Absolute Error: 789.127
Mean Squared Error: 1206939.819
Root Mean Squared Error: 1098.608
Score: 0.411
Atual Predito
400744 1601 1066.142604
369215 821 411.362865
387264 607 1413.823723
296234 450 506.042638
712621 950 1197.793248
[ ]:
plot_feat_importances(rfr_sp, X_testSP)
_images/Cancer_Models_562_0.png
[ ]:
explainer = shap.TreeExplainer(clf)

# Calculate Shap values
shap_values = explainer.shap_values(X_test)

shap.summary_plot(shap_values, X_test)
[ ]:
#Fora
rfr_fora = RandomForestRegressor(random_state=seed, max_depth=10)
rfr_fora.fit(X_trainFora_enc, y_trainFora)

df = validate_regression(X_testFora_, rfr_fora, y_testFora)
df.head()
Mean Absolute Error: 666.757
Mean Squared Error: 936572.966
Root Mean Squared Error: 967.767
Score: 0.465
Atual Predito
1077 725 603.877560
15361 937 1179.243432
3301 0 142.773351
32432 3338 2193.524780
39694 649 1604.267427
[ ]:
plot_feat_importances(rfr_fora, X_testFora)
_images/Cancer_Models_565_0.png

XGBoost Regressor

[ ]:
# SP
xgbr_sp = xgb.XGBRegressor(max_depth=10, random_state=seed)
xgbr_sp.fit(X_trainSP_enc, y_trainSP)

df = validate_regression(X_testSP_, xgbr_sp, y_testSP)
df.head()
Mean Absolute Error: 688.776
Mean Squared Error: 987516.733
Root Mean Squared Error: 993.739
Score: 0.518
Atual Predito
400744 1601 1111.362915
369215 821 553.654419
387264 607 2191.481445
296234 450 291.403107
712621 950 1567.593628
[ ]:
plot_feat_importances(xgbr_sp, X_testSP)
_images/Cancer_Models_568_0.png
[ ]:
# Fora de SP
xgbr_fora = xgb.XGBRegressor(max_depth=10, random_state=seed)
xgbr_fora.fit(X_trainFora_enc, y_trainFora)

df = validate_regression(X_testFora_, xgbr_fora, y_testFora)
df.head()
Mean Absolute Error: 623.954
Mean Squared Error: 873684.741
Root Mean Squared Error: 934.711
Score: 0.500
Atual Predito
1077 725 524.960632
15361 937 938.364014
3301 0 128.937836
32432 3338 2433.032715
39694 649 1514.557251
[ ]:
plot_feat_importances(xgbr_fora, X_testFora)
_images/Cancer_Models_570_0.png

Regressão - Delta t8

Diferença de dias entre última informação e diagnóstico

Dados

[ ]:
df_SP = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_SP_labels.csv')
df_fora = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_foraSP_labels.csv')
(806402, 94)
(62317, 94)

SP

[ ]:
df_SP.isna().sum().sort_values(ascending=False).head(6)
DTRECIDIVA    717377
delta_t6      717377
delta_t5      717377
delta_t4      717377
IDADE              1
TRATAMENTO         0
dtype: int64

Fora de SP

[ ]:
df_fora.isna().sum().sort_values(ascending=False).head(6)
DTRECIDIVA    57799
delta_t6      57799
delta_t5      57799
delta_t4      57799
NAOTRAT           0
LOCALTNM          0
dtype: int64

Divisão em treino e teste

[ ]:
list_drop = ['UFRESID', 'DTCONSULT', 'DTDIAG', 'DTTRAT', 'DTRECIDIVA', 'DTULTINFO',
              'IDADE', 'PERDASEG', 'CONSDIAG', 'TRATCONS', 'DIAGTRAT', 'delta_t4',
              'delta_t5', 'delta_t6', 'delta_t7', 'delta_t9', 'ob', 'ano_ob',
              'ob_com_rec', 'ob_sem_rec', 'vivo_com_rec', 'vivo_sem_rec', 'ULTINFO']

lb = 'delta_t8'

SP

[ ]:
X_trainSP, X_testSP, y_trainSP, y_testSP = get_train_test(df_SP, list_drop, lb)
X_train = (604801, 70), X_test = (201601, 70)
y_train = (604801,), y_test = (201601,)

Fora de SP

[ ]:
X_trainFora, X_testFora, y_trainFora, y_testFora = get_train_test(df_fora, list_drop, lb)
X_train = (46737, 70), X_test = (15580, 70)
y_train = (46737,), y_test = (15580,)

Encoder e normalização

SP

[ ]:
X_trainSP_enc, enc_SP, norm_SP = train_preprocessing(X_trainSP, normalizer='StandardScaler')

Fora de SP

[ ]:
X_trainFora_enc, enc_fora, norm_fora = train_preprocessing(X_trainFora, normalizer='StandardScaler')

Treinamento dos modelos de Machine Learning

[ ]:
X_testSP_ = test_preprocessing(X_testSP, enc_SP, norm_SP)
X_testFora_ = test_preprocessing(X_testFora, enc_fora, norm_fora)

Regressão Linear

[ ]:
# SP
lr_sp = LinearRegression()
lr_sp.fit(X_trainSP_enc, y_trainSP)

df = validate_regression(X_testSP_, lr_sp, y_testSP)
df.head()
Mean Absolute Error: 917.532
Mean Squared Error: 1440077.362
Root Mean Squared Error: 1200.032
Score: 0.295
Atual Predito
400744 1601 1212.895704
369215 821 270.240186
387264 607 1797.195753
296234 433 -62.433153
712621 932 1578.041456
[ ]:
#Fora
lr_fora = LinearRegression()
lr_fora.fit(X_trainFora_enc, y_trainFora)

df = validate_regression(X_testFora_, lr_fora, y_testFora)
df.head()
Mean Absolute Error: 812.902
Mean Squared Error: 1189432.817
Root Mean Squared Error: 1090.611
Score: 0.317
Atual Predito
1077 724 761.469313
15361 936 2302.813063
3301 0 488.399001
32432 3365 1941.109938
39694 663 1639.820876

Random Forest Regressor

[ ]:
# SP
rfr_sp = RandomForestRegressor(random_state=seed, max_depth=10)
rfr_sp.fit(X_trainSP_enc, y_trainSP)

df = validate_regression(X_testSP_, rfr_sp, y_testSP)
df.head()
Mean Absolute Error: 782.262
Mean Squared Error: 1194981.537
Root Mean Squared Error: 1093.152
Score: 0.415
Atual Predito
400744 1601 1087.039035
369215 821 518.036018
387264 607 1372.657580
296234 433 465.771390
712621 932 1188.574914
[ ]:
plot_feat_importances(rfr_sp, X_testSP)
_images/Cancer_Models_596_0.png
[ ]:
#Fora
rfr_fora = RandomForestRegressor(random_state=seed, max_depth=10)
rfr_fora.fit(X_trainFora_enc, y_trainFora)

df = validate_regression(X_testFora_, rfr_fora, y_testFora)
df.head()
Mean Absolute Error: 663.865
Mean Squared Error: 932155.284
Root Mean Squared Error: 965.482
Score: 0.465
Atual Predito
1077 724 563.031369
15361 936 1175.947709
3301 0 182.594751
32432 3365 2200.058714
39694 663 1630.858141
[ ]:
plot_feat_importances(rfr_fora, X_testFora)
_images/Cancer_Models_598_0.png

XGBoost Regressor

[ ]:
# SP
xgbr_sp = xgb.XGBRegressor(max_depth=10, random_state=seed)
xgbr_sp.fit(X_trainSP_enc, y_trainSP)

df = validate_regression(X_testSP_, xgbr_sp, y_testSP)
df.head()
Mean Absolute Error: 684.538
Mean Squared Error: 981686.231
Root Mean Squared Error: 990.801
Score: 0.519
Atual Predito
400744 1601 1151.933350
369215 821 588.347168
387264 607 1939.386353
296234 433 386.729523
712621 932 1362.151489
[ ]:
plot_feat_importances(xgbr_sp, X_testSP)
_images/Cancer_Models_601_0.png
[ ]:
# Fora de SP
xgbr_fora = xgb.XGBRegressor(max_depth=10, random_state=seed)
xgbr_fora.fit(X_trainFora_enc, y_trainFora)

df = validate_regression(X_testFora_, xgbr_fora, y_testFora)
df.head()
Mean Absolute Error: 621.821
Mean Squared Error: 871262.892
Root Mean Squared Error: 933.415
Score: 0.500
Atual Predito
1077 724 328.065918
15361 936 659.311401
3301 0 85.232018
32432 3365 2337.692383
39694 663 1598.594604
[ ]:
plot_feat_importances(xgbr_fora, X_testFora)
_images/Cancer_Models_603_0.png

Regressão - Delta t9

Diferença de dias entre última informação e tratamento

Dados

[ ]:
df_SP = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_SP_labels.csv')
df_fora = read_csv('/content/drive/MyDrive/Trabalho/Cancer/Datasets/cancer_foraSP_labels.csv')
(806402, 94)
(62317, 94)

SP

[ ]:
df_SP.isna().sum().sort_values(ascending=False).head(6)
DTRECIDIVA    717377
delta_t6      717377
delta_t5      717377
delta_t4      717377
IDADE              1
TRATAMENTO         0
dtype: int64

Fora de SP

[ ]:
df_fora.isna().sum().sort_values(ascending=False).head(6)
DTRECIDIVA    57799
delta_t6      57799
delta_t5      57799
delta_t4      57799
NAOTRAT           0
LOCALTNM          0
dtype: int64

Divisão em treino e teste

[ ]:
list_drop = ['UFRESID', 'DTCONSULT', 'DTDIAG', 'DTTRAT', 'DTRECIDIVA', 'DTULTINFO',
              'IDADE', 'PERDASEG', 'CONSDIAG', 'TRATCONS', 'DIAGTRAT', 'delta_t4',
              'delta_t5', 'delta_t6', 'delta_t7', 'delta_t8', 'ob', 'ano_ob',
              'ob_com_rec', 'ob_sem_rec', 'vivo_com_rec', 'vivo_sem_rec', 'ULTINFO']

lb = 'delta_t9'

SP

[ ]:
X_trainSP, X_testSP, y_trainSP, y_testSP = get_train_test(df_SP, list_drop, lb)
X_train = (604801, 70), X_test = (201601, 70)
y_train = (604801,), y_test = (201601,)

Fora de SP

[ ]:
X_trainFora, X_testFora, y_trainFora, y_testFora = get_train_test(df_fora, list_drop, lb)
X_train = (46737, 70), X_test = (15580, 70)
y_train = (46737,), y_test = (15580,)

Encoder e normalização

SP

[ ]:
X_trainSP_enc, enc_SP, norm_SP = train_preprocessing(X_trainSP, normalizer='StandardScaler')

Fora de SP

[ ]:
X_trainFora_enc, enc_fora, norm_fora = train_preprocessing(X_trainFora, normalizer='StandardScaler')

Treinamento dos modelos de Machine Learning

[ ]:
X_testSP_ = test_preprocessing(X_testSP, enc_SP, norm_SP)
X_testFora_ = test_preprocessing(X_testFora, enc_fora, norm_fora)

Regressão Linear

[ ]:
# SP
lr_sp = LinearRegression()
lr_sp.fit(X_trainSP_enc, y_trainSP)

df = validate_regression(X_testSP_, lr_sp, y_testSP)
df.head()
Mean Absolute Error: 917.532
Mean Squared Error: 1440076.155
Root Mean Squared Error: 1200.032
Score: 0.290
Atual Predito
400744 1601 1212.674232
369215 821 270.032387
387264 607 1797.251137
296234 432 -63.690025
712621 932 1578.068764
[ ]:
#Fora
lr_fora = LinearRegression()
lr_fora.fit(X_trainFora_enc, y_trainFora)

df = validate_regression(X_testFora_, lr_fora, y_testFora)
df.head()
Mean Absolute Error: 812.903
Mean Squared Error: 1189446.574
Root Mean Squared Error: 1090.618
Score: 0.314
Atual Predito
1077 722 759.668038
15361 900 2266.863350
3301 0 488.558663
32432 3242 1818.066475
39694 617 1593.875069

Random Forest Regressor

[ ]:
# SP
rfr_sp = RandomForestRegressor(random_state=seed, max_depth=10)
rfr_sp.fit(X_trainSP_enc, y_trainSP)

df = validate_regression(X_testSP_, rfr_sp, y_testSP)
df.head()
Mean Absolute Error: 786.767
Mean Squared Error: 1202804.992
Root Mean Squared Error: 1096.725
Score: 0.407
Atual Predito
400744 1601 972.655416
369215 821 496.240294
387264 607 1444.964174
296234 432 379.399929
712621 932 1045.604967
[ ]:
plot_feat_importances(rfr_sp, X_testSP)
_images/Cancer_Models_629_0.png
[ ]:
#Fora
rfr_fora = RandomForestRegressor(random_state=seed, max_depth=10)
rfr_fora.fit(X_trainFora_enc, y_trainFora)

df = validate_regression(X_testFora_, rfr_fora, y_testFora)
df.head()
Mean Absolute Error: 661.897
Mean Squared Error: 930451.127
Root Mean Squared Error: 964.599
Score: 0.463
Atual Predito
1077 722 590.680256
15361 900 1100.449912
3301 0 144.763233
32432 3242 2056.779114
39694 617 1534.478341
[ ]:
plot_feat_importances(rfr_fora, X_testFora)
_images/Cancer_Models_631_0.png

XGBoost Regressor

[ ]:
# SP
xgbr_sp = xgb.XGBRegressor(max_depth=10, random_state=seed)
xgbr_sp.fit(X_trainSP_enc, y_trainSP)

df = validate_regression(X_testSP_, xgbr_sp, y_testSP)
df.head()
Mean Absolute Error: 686.576
Mean Squared Error: 984998.882
Root Mean Squared Error: 992.471
Score: 0.515
Atual Predito
400744 1601 1213.645386
369215 821 581.393982
387264 607 2168.392090
296234 432 354.484192
712621 932 1454.262573
[ ]:
plot_feat_importances(xgbr_sp, X_testSP)
_images/Cancer_Models_634_0.png
[ ]:
# Fora de SP
xgbr_fora = xgb.XGBRegressor(max_depth=10, random_state=seed)
xgbr_fora.fit(X_trainFora_enc, y_trainFora)

df = validate_regression(X_testFora_, xgbr_fora, y_testFora)
df.head()
Mean Absolute Error: 622.764
Mean Squared Error: 867916.256
Root Mean Squared Error: 931.620
Score: 0.499
Atual Predito
1077 722 329.546387
15361 900 559.976929
3301 0 93.525551
32432 3242 2317.746338
39694 617 1534.290405
[ ]:
plot_feat_importances(xgbr_fora, X_testFora)
_images/Cancer_Models_636_0.png